오늘의 학습 키워드
https://school.programmers.co.kr/learn/courses/30/lessons/42576
- 완주하지 못한 선수
완주하지 못한 선수
- 자바, 프로그래머스 > 연습문제
공부한 내용 본인의 언어로 정리하기
문자답안
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Map<String, Integer> countSet = new HashMap<>();
// 참가자 명단을 해시맵에 저장하면서 카운트
for (String str : participant) {
countSet.put(str, countSet.getOrDefault(str, 0) + 1);
}
// 완주자 명단을 순회하며 카운트를 감소
for (String com : completion) {
countSet.put(com, countSet.get(com) - 1);
}
// 카운트가 0이 아닌 키가 완주하지 못한 선수
for (Map.Entry<String, Integer> entry : countSet.entrySet()) {
if (entry.getValue() > 0) {
return entry.getKey();
}
}
return ""; // 모든 참가자가 완주한 경우 빈 문자열 반환 (문제 조건에선 발생하지 않음)
}
}
문제 해석
해당 문제는 참가자 중 완주를 못한 인원이 1개라고 고정해두고 시작한다. 그렇기 때문에 주어진 참가자를 먼저 체크하고 그 뒤에 완주자를 체크하여 완주하지 못한 1인을 찾으면 된다.
// 참가자 명단을 해시맵에 저장하면서 카운트
for (String str : participant) {
countSet.put(str, countSet.getOrDefault(str, 0) + 1);
}
// 완주자 명단을 순회하며 카운트를 감소
for (String com : completion) {
countSet.put(com, countSet.get(com) - 1);
}
hashmap을 선언하여 참가자 반복문을 돌면서 +1, 반대로 완주자는 -1로 하면서 체크해준다. 그러면 완주한 인원에 대해서는 value값이 0, 완주하지 못한 인원은 1이 나오게 된다.
// 카운트가 0이 아닌 키가 완주하지 못한 선수
for (Map.Entry<String, Integer> entry : countSet.entrySet()) {
if (entry.getValue() > 0) {
return entry.getKey();
}
}
그래서 위와 같은 조건식이 나오게 된다.
오늘의 회고
- 해시맵을 반복하는 여러 방법 기록하기
'TIL' 카테고리의 다른 글
[TIL-24/11/09] 99클럽 코테 스터디 13일차 TIL - 단어순서 뒤집기 -JAVA (1) | 2024.11.10 |
---|---|
[TIL-24/11/08] 99클럽 코테 스터디 12일차 TIL - 스택(백준) -JAVA (1) | 2024.11.09 |
[TIL-24/11/06] 99클럽 코테 스터디 10일차 TIL - 민균이의 비밀번호-JAVA (5) | 2024.11.06 |
[TIL-24/11/05] 99클럽 코테 스터디 9일차 TIL - 민균이의 비밀번호-JAVA (4) | 2024.11.05 |
[TIL-24/11/03] 99클럽 코테 스터디 7일차 TIL - 전주 듣고 노래 맞히기 (1) | 2024.11.03 |