프로그래머스 - 신고 결과 받기 (JAVA)
카카오 코테 Level1의 간단한 문제다.
자료구조를 활용하는데 익숙하다면 어려움 없이 풀 수 있다.
오랜만에 자바 연습 좀 할 겸 자바로 작성했다.
좀 더 깔끔히 풀 수도 있을것 같아서,,, 다음 번에 볼때는 다른 이들의 풀이도 참고해 보기로,,,
한사람이 똑같은 사람을 여러번 신고한 것은 한번으로 치므로, Set을 사용하여 중복을 거른 것 정도를 중점적으로 작성했다.
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
HashMap<String, Integer> reported = new HashMap<>(); // 신고 한 사람이 메일 돌려받는 횟수
HashMap<String, Set<String>> reporter = new HashMap<>(); //신고 받은 사람- 신고한사람 명단
int lth = id_list.length;
int[] answer = new int[lth];
// 초기화
for (int i = 0; i < lth; i++) {
reported.put(id_list[i], 0);
Set<String> pp = new HashSet<>();
reporter.put(id_list[i], pp);
}
int repSz = report.length;
// 신고 받은 사람 기준으로 신고한 사람 명단 만들기
for (int i = 0; i < repSz; i++) {
String[] tmp = report[i].split(" ");
// 신고한 사람 체크
Set<String> pp = reporter.get(tmp[1]);
pp.add(tmp[0]);
reporter.put(tmp[1], pp);
}
// 명단 기준으로 메일 되돌려 받는 횟수 카운트
for (int i=0; i < lth; i++) {
Set<String> chk = reporter.get(id_list[i]);
if (chk.size() >= k) {
for (String chker:chk) {
int repCnt = reported.get(chker);
reported.put(chker, repCnt+1);
}
}
}
for (int i = 0; i < lth; i++) {
answer[i] = reported.get(id_list[i]);
}
return answer;
}
}
Author And Source
이 문제에 관하여(프로그래머스 - 신고 결과 받기 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@countryyoon/프로그래머스-신고-결과-받기-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)