반응형
문제 링크
코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr)
문제 풀이
- 주의할 점
- 동명이인이 있을 수 있기 때문에 remove 같은 메소드로는 정답을 구할 수 없습니다.
1번 풀이
public String solution(String[] participant, String[] completion) {
String answer = new String();
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(String runner : participant) map.put(runner, map.getOrDefault(runner, 0) + 1);
for(String runner : completion) map.put(runner, map.get(runner) - 1);
for(String runner : map.keySet()) {
if(map.get(runner) != 0) {
answer = runner;
break;
}
}
return answer;
}
public V getOrDefault(Object key, V defaultValue)
key가 이미 있는지 확인하고, 있으면 해당 key의 값을 반환하고, 없으면 defulatValue의 값을 반환합니다.
map.getOrDefault(runner, 0)
저 같은 경우는 이렇게 썼기 때문에 map에 runner 이름이 이미 삽입되어 있으면 해당 runner의 value 값을 가져오고 없으면 0을 삽입합니다.
participant를 순회할 때는 1씩 증가시키고
completion을 순회할 때는 1씩 감소시켜서
최종적으로 map에 저장되어 있는 value가 0이 아닌(또는 0보다 큰) 경우가 완주하지 못한 선수입니다.
테스트 처리속도
- 🔥 0.05ms ~ 0.84ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 소수 만들기 java :: Summer/Winter Coding(~2018) :: 12977 (0) | 2022.07.06 |
---|---|
프로그래머스 - 내적 java :: 월간 코드 챌린지 시즌1 (0) | 2022.07.06 |
프로그래머스 - K번째수 java :: 정렬 (0) | 2022.07.05 |
프로그래머스 - 체육복 java :: 탐욕법(Greedy) :: 42862 (0) | 2022.07.05 |
프로그래머스 - 모의고사 java :: 완전탐색 (0) | 2022.07.05 |