https://programmers.co.kr/learn/courses/30/lessons/42576
포인트는
HashMap을 사용해 복잡도를 O(n)을 넘으면 안되는 것과
동명이인이 2명 3명 이상이 될 수 있어 해시맵에 저장된 이름에 대한 value 값을 기존 값에 더 해주고 빼주어야 하는 것이다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
HashMap<String, Integer> map= new HashMap<String, Integer>();
for(String name : completion) {
if(map.containsKey(name)) {
map.put(name, map.get(name) + 1); //동명이인 경우 완주한 사람 증가
}
else
map.put(name, 1); // 처음 등장한 이름 저장
}
for(String name : participant) {
if(map.containsKey(name)){
if(map.get(name) != 0) {
map.put(name, map.get(name) - 1); // 완주 목록에서 1명씩 지워나감
}
else // 완주 목록에는 있으나 이미 지워져 0일때
return name;
}
else // 완주 목록에 없을 때
return name;
}
return "";
}
}
반응형
'알고리즘(자바)' 카테고리의 다른 글
[프로그래머스] (2018년)KAKAO BLIND RECRUITMENT 오픈채팅방 (0) | 2019.09.11 |
---|---|
[백준]BFS 알고리즘 과 토마토 문제 (0) | 2019.09.02 |
순열 Permutation 알고리즘 (0) | 2019.07.18 |
소수 인지 체크하는 함수 와 최대공약수, 최소 공배수 구하기 (0) | 2019.06.19 |
알고리즘 언어 선택 (1) | 2019.05.13 |
알고리즘 (0) | 2019.04.14 |