[프로그래머스/JAVA] 완주하지 못한 선수

밍주🫧 ·2025년 3월 1일
0
post-thumbnail

문제 원문

프로그래머스 완주하지 못한 선수

문제 정리

제시된 두 개의 배열을 비교해서
완주하지 못한 선수의 이름을 출력.

작성 코드

🙅 실패 버전



//hashSet 사용하기 위함
import java.util.*;

public class Main {

    public int solution(int[] nums) {

      String ans = "";

      //배열 똑같이 이름 정렬 
      Arrays.sort(participant);
      Arrays.sort(completion);

      for(int i = 0; i < completion.length; i ++) {
      	//이름을 똑같이 정렬했으니까 이름이 다르면 그 사람이 미완주자
          if(participant[i] != completion[i] ) {
              ans = participant[i];
            }
		//다 순회해도 미완주자가 안 나오면 마지막 사람이 미완주자
         ans = participant[participant.length - 1];
       }

       return ans;
       
    }

}

이렇게 진행을 했는데 오답이 나왔다.
테스트 케이스를 보니, 이름이 같은데 한 사람은 완주하고 다른 한 사람은 완주하지 않은 것을 확인할 수 있었다.

그래서 푼 두 번째 방법

🫧성공 버전

import java.util.*;

public class Main {

    public String solution(String[] participant, String[] completion) {
        String answer = "";

        HashMap<String, Integer> pariMap = new HashMap<>();

        for (String parti : participant) {
            //getOrDefault -> 이미 해시맵에 값이 존재하면 +1, 아니면 default 0
            pariMap.put(parti, pariMap.getOrDefault(parti, 0) + 1);
        }

        for (String comp : completion) {
            //완주자 숫자 감소.
            pariMap.put(comp, pariMap.get(comp) - 1);
        }

        for (String find : pariMap.keySet()) {
            //0이 아닌 사람은 완주자가 아니므로 return
            if(pariMap.get(find) != 0) {
                return find;
            }
        }
    
        return answer;
    }

}

✔️getOrDefault
해시맵 값이 존재하지 않으면 default값으로 값을 넣어주고, 아니면 다른 값을 넣어줌.
이 경우 +1을 해서 값을 덮어씌워줬다.

결과

성공!

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN