Notice
Recent Posts
Recent Comments
Link
Welcome! Everything is fine.
[프로그래머스/Lv.1] 완주하지 못한 선수 - Java 본문
728x90
📌 문제
📌 풀이
참가자 명단에는 있으나 완주자 명단에는 없는 선수의 이름을 반환하는 문제이다. 주의할 점은 참가자 중에 동명이인이 있을 수 있다는 점이다. 내가 작성한 풀이의 대략적인 흐름은 다음과 같다.
- 참가자 배열을 돌며 HashMap에 <참가자 이름, 인원 수> 형태로 참가자들의 정보를 저장한다.
- 완주자 배열을 돌며 HashMap에 저장된 key와 같은 이름이 나올 경우
- 해당 이름이 1개인 경우, 해당 이름으로 된 key를 삭제한다.
- 해당 이름이 2개 이상인 경우(동명이인이 있을 경우), 해당 이름의 인원수를 1 감소시킨다.
- 위 과정을 거치면 완주자 명단에 없는 이름이 남기 때문에 해당 key를 answer에 대입한 후 반환한다.
아래와 같은 과정에서 보통은 map.containsKey()를 사용했었는데, 이제는 getOrDefault() 메서드를 알게 되어 사용해보았다. 해당 key에 대한 value가 없을 경우 기본값으로 0을 넣어준다.
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < participant.length; i++) {
String key = participant[i];
map.put(key, map.getOrDefault(key, 0) + 1);
}
그리고나서 completion 배열을 돌며 해당 map에 완주자가 있다면 지운다. 단, 동명이인이 있을 경우 인원 수를 1 감소시킨다.
for (int i = 0; i < completion.length; i++) {
if (map.containsKey(completion[i])) {
if (map.get(completion[i]) == 1) map.remove(completion[i]);
else map.replace(completion[i],map.get(completion[i]) - 1);
}
}
남은 keyfmf answer에 넣어준 후 반환한다.
for (String key : map.keySet()) {
answer = key;
}
📌 전체코드
다른 사람들의 코드를 보니 해시 말고도 주어진 배열을 정렬한 후 푸는 방법도 있었다. 여러가지 방법을 시도해보고 자신에게 맞는 방법으로 풀면 될 것 같다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < participant.length; i++) {
String key = participant[i];
map.put(key, map.getOrDefault(key, 0) + 1);
}
for (int i = 0; i < completion.length; i++) {
if (map.containsKey(completion[i])) {
if (map.get(completion[i]) == 1) map.remove(completion[i]);
else map.replace(completion[i],map.get(completion[i]) - 1);
}
}
for (String key : map.keySet()) {
answer = key;
}
return answer;
}
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/Lv.1] 문자열 나누기 - Java (0) | 2024.05.06 |
---|---|
[프로그래머스/Lv.1] 다트 게임(2018 KAKAO BLIND RECRUITMENT) - Java (0) | 2024.04.29 |
[프로그래머스/Lv.1] 둘만의 암호 - Java (0) | 2024.04.29 |
[프로그래머스/Lv.1] 숫자 짝꿍 - Java (0) | 2024.04.27 |
[프로그래머스/Lv.1] 옹알이(2) - Java (0) | 2024.04.27 |