반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42576
1) 내가 구현한 코드
- 처음에는 제시된 데이터가 둘 다 배열이니 배열끼리 비교하면 되겠다 생각했다.
- 그러나 효율적이지 못할거라는 생각과, 동명이인은 어떻게 처리해야할지 모르겠다는 생각이 들었다.
- 최종 내린 결론은 해시맵에 선수들의 이름을 키로 담고, 밸류에는 참가자들이면 카운드 1 더해주고, 또 완주했을경우 카운드 1을 더해주기로 한다. 이렇게 될 경우
- 최종 완주한 선수들은 짝수 : 2, 4, 6, ... (2 이상은 동명이인)
- 완주하지 못한 선수들은 홀수: 1, 3, 5, 7, ... (3 이상은 동명이인)
- 으로 카운트 될 것이다. 밸류들 중 최종 홀수인 밸류의 키값을 반환하면 되는 것이다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//"name" : "호명횟수 2,4,6 .. 등 짝수"
HashMap<String,Integer> map = new HashMap<>();
for(String part:participant){
map.put(part,map.getOrDefault(part,0)+1);
}
for(String comp:completion){
map.put(comp,map.getOrDefault(comp,0)+1);
}
for(Map.Entry<String,Integer> entry:map.entrySet()){
if(entry.getValue()%2==1) answer = entry.getKey();
}
return answer;
}
}
2) 오늘의 학습 키워드
- 배열의 빈도 수 계산
- HashMap 활용한 참여자와 완주자 비교
- 동명이인 처리 방식
- 마라톤 참가자 중 완주하지 못한 한 사람을 찾는 문제를 해결했다.
- 이 문제에서는 동명이인이 있을 수 있기 때문에 배열을 단순히 비교하는 것만으로는 답을 구할 수 없다.
- 이에 따라 HashMap을 사용해 각 이름별 빈도 수를 저장하고,
완주자 목록에서 이름을 차감하면서 최종적으로 남아 있는 이름을 찾는 방식으로 해결했다.
3) 오늘의 회고
문제점
- 처음에는 HashMap 없이 단순히 두 배열을 비교하려 했으나, 동명이인이 포함된 경우와 배열의 크기가 크다는 점에서 어려움이 있었다.
해결법
- HashMap을 활용하여 참가자의 이름을 Key로 설정하고, 참가자 목록을 순회하며 각 이름별로 빈도 수를 기록했다.
- 이후 완주자 목록을 순회하면서 해당 이름의 빈도 수를 증감했다.
- (차감해도 됨 : 이럴 경우 0이면 완주자, 1이면 완주하지 못한자).
- 이는 O(n) 시간 복잡도로 문제를 효율적으로 해결할 수 있게 해주었다.
새롭게 알게된 점
- HashMap을 이용해 중복된 이름을 효율적으로 관리하고,
- 각 이름의 빈도 수를 카운트하는 방법을 배웠다.
- 이 방식은 동명이인과 같은 케이스를 처리할 때 유용하다.
내일의 학습 목표
- HashMap을 사용하는 빈도 수 처리 방식에서 다양한 예외 사항을 관리하는 방법을 학습할 예정이다.
- 이를 통해 데이터를 집계하고 빈도 수를 더 복잡한 문제에도 응용할 수 있도록 연습할 계획이다.
4) 추가 문제
미들러 - Yes or yes
https://www.acmicpc.net/problem/25195
챌린저 - 도서관
반응형
'coding_test' 카테고리의 다른 글
[99클럽 4기 코테 스터디 TIL 12일차] 스택 (feat. Stack 자료구조, String.startsWith()) (0) | 2024.11.08 |
---|---|
[99클럽 4기 코테 스터디 TIL 11일차 보너스문제] 회사에 있는 사람 (feat. 해시맵) (0) | 2024.11.08 |
[99클럽 4기 코테 스터디 TIL 10일차] 폰켓몬 (feat. HashSet, Math.min()) (1) | 2024.11.06 |
[99클럽 4기 코테 스터디 TIL 9일차] 민균이의 비밀번호 (feat. HashSet, StringBuilder) (0) | 2024.11.06 |
[99클럽 4기 코테 스터디 TIL 8일차] 근무 지옥에 빠진 푸앙이 (Small) (feat. 해시맵) (3) | 2024.11.05 |