정말 간단한 문제지만 java로 오랜만에 풀어보는 문제라 간단한 걸로 준비했다
로직
hashMap을 만들고
participant와 compeltion을 동일한 hashmap에 넣어 카운트 해준다
중복되지 않은 값은 무조건 홀수이므로, hashmap 전체를 순회하여 % 2 == 1인 값을 return해준다.
코드
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> hashMap = new HashMap<String, Integer>();
putElements(hashMap, participant);
putElements(hashMap, completion);
return nonCompletion(hashMap);
}
void putElements(Map<String, Integer> hashMap, String[] people){
for(String name : people){
int defaultValue = 1;
if(hashMap.containsKey(name)){
defaultValue += hashMap.get(name);
}
hashMap.put(name, defaultValue);
}
}
String nonCompletion(Map<String, Integer> hashMap){
for(String name : hashMap.keySet()){
if(hashMap.get(name) % 2 == 1) return name;
}
return "";
}
}
코드리뷰
1. 오랜만에 하는거라 util을 *로 했는데 hashMap만 import 해줘도 괜찮을 것같다
2. HashMap에 getOrDefault라는 코드가 있더라
for(String name : participant) hashMap.put(name, hashMap.getOrDefault(name, 0) + 1);
이렇게 더 깔끔한 코드가 가능해진다.
'코테 준비' 카테고리의 다른 글
[프로그래머스] 스킬트리- Java (0) | 2020.10.16 |
---|---|
[프로그래머스] 기능 개발 - Java (0) | 2020.10.13 |
[프로그래머스] 삼각 달팽이 (0) | 2020.10.11 |
[프로그래머스] 가장 긴 팰린드롬 (0) | 2020.09.29 |
[프로그래머스] N -Queen (0) | 2020.09.25 |