https://school.programmers.co.kr/learn/courses/30/lessons/92334
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
public int[] solution(String[] id_list, String[] report, int k) {
int[] count = new int[id_list.length];
int[] answer = new int[id_list.length];
HashMap<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < id_list.length; i++) {
hashMap.put(id_list[i], i);
}
Set<String> set = new HashSet<>(Arrays.asList(report)); // 중복 제거해서 구성
List<String> list = new ArrayList<>(set);
String[] re = set.toArray(new String[0]);
for (int i = 0; i < set.size(); i++) {
String[] arr = re[i].split(" ");
count[hashMap.get(arr[1])]++;
}
for (int i = 0; i < list.size(); i++) { // 일정치 넘으면 신고한 사람들에게 보내기
String[] arr = list.get(i).split(" ");
if (count[hashMap.get(arr[1])] >= k) {
answer[hashMap.get(arr[0])]++;
}
}
return answer;
}
📍포인트
1. 중복 신고는 의미없으니 report는 중복을 없애고
3. 신고한 report가 k개보다 많은 경우
2. 그 신고를 한 유저들에게 메일을 보낸다.
📍삽질
1. 배열의 인덱스와 값의 매칭을 엄청 고민한 결과 Map이 정답이였다. 괜히 안 쓰다가 머리만 아팠다.
2. Set은 조회가 불가능하기 때문에 List로 변경 후 조회했다.
3. 맨 처음 2중 for문으로 구현했지만, 시간초과후 다시 삽질..
4. 그냥 내가 멍청한 것 같다....✌️
'코딩테스트' 카테고리의 다른 글
[코딩테스트(Java)] 프로그래머스 77484 로또의 최고 순위와 최저 순위 (0) | 2025.03.12 |
---|---|
[코딩테스트(Java)] 프로그래머스 50048 베스트앨범 (0) | 2025.03.12 |
[코딩테스트(Java)] 프로그래머스 72410 신규 아이디 추천 (0) | 2025.03.09 |
[코딩테스트(Java)] 프로그래머스 42889 실패율 (0) | 2025.03.08 |
[코딩테스트(Java)] 프로그래머스 17682 다트 게임 (0) | 2025.03.07 |