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
- 자바 코드와 같은 로직이다. 몇 달 전 파이썬으로 처음 풀었을 때는 딕셔너리 구조를 바로 생각해내지 못했다. 지금도 잘 모르지만 이 땐, 자료구조에 대해서 정말 아는 게 없었던 것 같다. 여튼 이 때, 딕셔너리를 머리에 대충 넣어뒀기에, 이번엔 문제 풀 때 같은 로직이 바로 떠올랐다.
'Algorithm' 카테고리의 다른 글
[Programmers/java/python][깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버 (0) | 2021.12.07 |
---|---|
[Programmers/java][해시] 위장 (0) | 2021.09.24 |
[Programmers/java][해시] 전화번호 목록 (0) | 2021.09.16 |
[Programmers/java/python][스택/큐] 기능개발 (0) | 2021.09.13 |
[Python 알고리즘 인터뷰]분할 정복 (0) | 2021.06.13 |