프로그래머스 완주하지 못한 선수
java
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Map<String, Integer> map = new HashMap<>();
// .getOrDefault() 메소드를 참고함
Integer n;
for (String s : participant) {
map.put(s, (( n = (map.get(s))) != null) ? n + 1 : 1);
}
for (String s : completion) {
if ((n = (map.get(s) - 1)) == 0) map.remove(s);
else map.put(s, n);
}
Set<String> strings = map.keySet();
for (String s : strings) answer = s;
return answer;
}
}
- HashMap 라이브러리 문서를 읽어보려고 노력했다...ㅎ 노력에 의의를 둔다.
python
def solution(participant, completion):
answer = ''
par={}
for n in participant:
if n in par.keys(): par[n]= par[n]+1
else: par[n]= 1
for n in completion:
par[n] = par[n]-1
if par[n]==0: del par[n]
answer = list(par.keys())[0]
return answer
- 자바 코드와 같은 로직이다. 몇 달 전 파이썬으로 처음 풀었을 때는 딕셔너리 구조를 바로 생각해내지 못했다. 지금도 잘 모르지만 이 땐, 자료구조에 대해서 정말 아는 게 없었던 것 같다. 여튼 이 때, 딕셔너리를 머리에 대충 넣어뒀기에, 이번엔 문제 풀 때 같은 로직이 바로 떠올랐다.