728x90
https://school.programmers.co.kr/learn/courses/30/lessons/92334
이 문제는 간단한것 같으면서도 1단계치고 은근 생각해야하는 조건이 많아서 생각보다 난이도가 있다고 생각하였다.
하지만 하나씩 차근차근 생각해보다보니 풀수 있었다.
우선 한사람이 같은사람을 여러번 신고한 경우 1회만 인정이 된다. 즉, 중복제거를 해야한다.
또한 tmp와 같이 비어있는 새로운 복사본을 만들면 그 이후에는 조건을 생각하기 조금 쉽다.
(근데 나는 비어있는 새로운 복사본 만드는데도 애먹었음... 공부좀 하자)
그럼 코드를 바로 보자.
const solution = (id_list, report, k) => {
// 신고 중복 안되어 중복제거
report = [...new Set(report)];
// 모든 값이 0인 새로운 배열 생성
const answer = new Array(id_list.length).fill(0);
// 빈배열을 가진 id리스트 생성
const report_lists = {};
id_list.map(list => {
report_lists[list] = [];
});
// 신고당한사람: [신고한사람들 배열] 구조 값을 할당
report.map(user => {
const [user_id, report_id] = user.split(' ');
report_lists[report_id].push(user_id);
});
// 결과 출력을 위해
for(const list in report_lists) {
if(report_lists[list].length >= k){
report_lists[list].map(user => {
answer[id_list.indexOf(user)] += 1;
})
}
}
return answer;
}
728x90
'알고리즘 > Programmers' 카테고리의 다른 글
[JavaScript]최솟값 만들기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 2) (0) | 2022.11.06 |
---|---|
[JavaScript]성격 유형 검사하기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1) (1) | 2022.10.01 |
[Programmers]약수의 개수와 덧셈_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.23 |
[Programmers]서울에서 김서방 찾기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.20 |
[Programmers]두 개 뽑아서 더하기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.19 |