조앤의 기술블로그
[프로그래머스 / 해시] 완주하지 못한 선수 (java) 본문
해시를 사용하는 방법을 익히기 위해 다른 사람의 코드를 참고하였다.
예제 3번의 조건을 유의해야 했다. (참여자 명단에 두명이 있는 경우)
해시를 사용하면 시간복잡도가 O(n)이 된다.
[코드]
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
int val = 0;
Map<String, Integer> hm = new HashMap<>();
for(String part : participant){
if(hm.get(part) == null)
hm.put(part, 1);
else{
val = hm.get(part) + 1;
hm.put(part, val);
}
}
for(String comp : completion){
val = hm.get(comp) - 1;
hm.put(comp,val);
}
//완주했다면 key가 0이 된다.
for(String key : hm.keySet()){
if(hm.get(key) == 1)
answer = key;
}
return answer;
}
}
[Map]
keySet() 함수 사용예시
https://tychejin.tistory.com/31
[참고]
https://dreamhollic.tistory.com/entry/알고리즘-문제-풀이5-완주하지-못한-선수-JAVA
'Programming > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / SQL] SUM, MAX, MIN (mysql) (0) | 2020.03.27 |
---|---|
[프로그래머스 / 해시] 위장 (java) (0) | 2020.03.27 |
[프로그래머스 / 스택&큐] 프린터 (java) (0) | 2020.03.25 |
[프로그래머스] 스킬트리 (java) (0) | 2020.03.23 |
[프로그래머스 / 카카오] 문자열 압축 (java) (0) | 2020.03.23 |