본문 바로가기

코딩테스트

완주하지 못한 선수 (해시)

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=java

 

중복에 대한 생각을 하지 못해서 조금 애를 먹었다. 다른 사람의 풀이를 보고 해결했다.

뭐.. 사실상 그 시점부터는 내가 푼게 아니라는 느낌이 전혀 아니긴 한데, 어떤 상황에서 써먹어야 하는 것인지는 확실히 이해했으니 만족하자.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

// 완주하지 못한 선수
//https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=java
//동명이인응로 중복되는 데이터를 걸러내야 한다는 생각을 전혀하지 못했다. 아래 세개의 테스트 케이스에서는 그것을 감안하지 않아도 됐지만 같은 이름의 사람이 세명이상인 시점부터 내가 처음 짰던 로직은 망가진다.
//아래 링크를 많이 참고했다.
//https://coding-grandpa.tistory.com/76

public class UnfinishedRunner {
    public static void main(String[] args) {
        String[] participantArray1 = {"leo", "kiki", "eden"};
        String[] completionArray1 = {"leo", "kiki", "eden"};
        String[] participantArray2 = {"marina", "josipa", "nikola", "vinko", "filipa"};
        String[] completionArray2 = {"josipa", "filipa", "marina", "nikola"};

        String[] participantArray3 = {"mislav", "stanko", "mislav", "ana"};
        String[] completionArray3 = {"stanko", "ana", "mislav"};


        UnfinishedRunner unfinishedRunner = new UnfinishedRunner();
        unfinishedRunner.solution(participantArray3, completionArray3);

    }

    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> participants = new HashMap<String, Integer>();
        for(int i =0; i<participant.length; i++){
            participants.put(participant[i], participants.getOrDefault(participant[i], 0) + 1);
        }

        for(String runner : completion){
           participants.put(runner, participants.get(runner)-1);
        }

        Iterator<Map.Entry<String, Integer>> iter = participants.entrySet().iterator();
        while (iter.hasNext()){
            Map.Entry<String, Integer> entry = iter.next();
            if(entry.getValue() != 0){
                answer = entry.getKey();
                break;
            }
        }
        return answer;
    }

}

 

 

 

'코딩테스트' 카테고리의 다른 글

K번째수  (0) 2025.01.10
코딩테스트 추억점수  (0) 2024.10.05
같은 숫자는 싫어  (0) 2024.08.12
프로그래머스 해시 포켓몬  (0) 2024.08.11
같은 숫자는 싫어  (0) 2024.08.08