문제
https://programmers.co.kr/learn/courses/30/lessons/92334
코딩테스트 연습 - 신고 결과 받기
문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의
programmers.co.kr
코드
function solution(id_list, report, k) { let answer = new Array(id_list.length).fill(0); //정답을 담을 배열 (배열의 길이는 유저 수와 같아야 하므로 배열 크기를 id_list.length로 설정) let report_obj = {}; // key : 각 유저, value : key 유저를 신고한 유저의 id 를 배열로 담는 객체 생성 //객체의 key를 각 유저로 저장 id_list.map((user) => { report_obj[user] = []; }); //각 신고 결과에 대해 report.map((user) => { let [from, to] = user.split(" "); //[신고한 유저, 신고당한 유저] 순서로 배열에 저장 //중복되는 신고는 제외하고 객체에 {신고당한유저 : [신고한 사람1, 신고한 사람2]} << 이런식으로 담기 if (!report_obj[to].includes(from)) { report_obj[to].push(from); } }); //객체의 각 key에 대해 (신고당한 각 유저에 대해) for (let key in report_obj) { //key의 value 개수가 k개 이상이면 (신고한 사람이 k명 이상이면) if (report_obj[key].length >= k) { report_obj[key].map((user) => { answer[id_list.indexOf(user)] += 1; //유저 배열에서 해당 key의 value에 있는 유저들(신고한 유저들)의 index를 찾아 answer배열에 해당 index 위치에 +1 하기 }); } } return answer; }
후기
- 나는 배열과 객체를 적절히 사용하여 풀이를 하였는데 다른 분의 풀이를 보니 Map 객체를 사용하면 코드가 좀 더 깔끔하게 나왔을 것 같다. level1 문제인데 역시 카카오다. 나한텐 너무 복잡하게 느껴져서 몇일만에 풀었다.ㅜㅜ 객체에 대한 지식이 부족한 탓으로 알고 이 기회에 객체에 대한 이해도를 더 높일 수 있는 계기가 되었다
잘못된 내용이나 수정이 필요한 내용이 있으면 언제든 댓글 달아주세요 감사합니다 😀
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 멀쩡한 사각형 / JavaScript (0) | 2022.06.28 |
---|---|
[Programmers] 비밀지도 / JavaScript (0) | 2022.02.10 |
[Programmers] 소수 찾기 / JavaScript (0) | 2022.02.09 |
[Programmers] 숫자의 표현 / JavaScript (0) | 2022.02.07 |
[Programmers] 최댓값과 최솟값 / JavaScript (0) | 2022.02.05 |