https://school.programmers.co.kr/learn/courses/30/lessons/42576
풀이
import java.io.*;
import java.util.*;
class Solution {
public static String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> check = new HashMap<>();
for(String x : participant){
if(check.containsKey(x)){
check.put(x, check.get(x) + 1);
}else{
check.put(x, 1);
}
}
for (String x : completion){
if(check.containsKey(x)){
check.put(x, check.get(x) - 1);
}
}
for(Map.Entry<String, Integer> entry : check.entrySet()){
if(entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
마라톤 참여자에 대해 먼저 키밸류를 넣어준다. 이름이 중복될 수 있기 때문에 값이 이미 있다면 +1을, 아니라면 1을 초기값으로 설정해 준다.
이후 완주자들에 대해 벨류를 0씩 낮춰주는 작업을 한다. 문제 조건에서 조금 친절하게 참여하지 않은 사람이 완주 목록에 있을 수는 없기 때문에 containsKey를 할 필요는 없겠지만 그래도 검사를 진행해 주었다.
마지막으로 값이 0이 아닌 것을 찾게 된다면 반환하게 된다. 여기서 바로 break를 쓴 것은 문제 조건에 한 명만 완주를 하지 못했다고 했기 때문이다.
역시 문제 조건을 항상 꼼꼼하게 체크하자!!
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 기능개발(JAVA) (0) | 2024.04.24 |
---|---|
[프로그래머스] 같은 숫자는 싫어(JAVA) (0) | 2024.04.24 |
[프로그래머스] 의상(JAVA) (0) | 2024.04.23 |
[프로그래머스] 전화번호 목록(JAVA) (0) | 2024.04.23 |
[프로그래머스] 폰켓몬(JAVA) (0) | 2024.04.23 |