반응형
문제 설명
제한 사항
풀이
처음 문제를 본 나의 생각을 정리해봤다.
- [유저명]: [신고당한 횟수] key, value를 가진 Object가 존재해야 할 것이다.
이때, 신고당한 횟수는 number값이다. - [유저명]: [나를 신고한 ID 목록] key, value를 가진 Object가 존재해야 할 것이다.
이때, value는 string array여야 할 것 같다.
그래서 나온 소스코드는 아래와 같다.
두 개의 Object를 만들어도 되지만 그냥 하나의 reportInfo라는 Object안에 신고당한 횟수 cnt와 나를 신고한 ID 목록을 Object로 또 만들었다.
그래서 그런지 가독성은 조금 떨어지는 느낌..
그리고 문제 조건 중에
- 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
라는 내용이 있기 때문에.. if문을 하나 추가했다.
마지막으로 id_list 순서대로 return을 해야 하기 때문에 한번 더 반복문을 추가하여 마무리를 했다.
function solution(id_list, report, k) {
var answer = [], len = id_list.length, reportInfo = {};
report.forEach((v) => {
let user = v.split(" ");
if(reportInfo.hasOwnProperty(user[1])) {
if(reportInfo[user[1]].reporter.indexOf(user[0]) == -1) {
reportInfo[user[1]].cnt++;
reportInfo[user[1]].reporter.push(user[0]);
}
} else {
reportInfo[user[1]] = {
cnt: 1,
reporter: [user[0]]
}
}
});
answer = id_list.map((v) => {
let cnt = 0;
for(let [key, value] of Object.entries(reportInfo)) {
if(value.cnt >= k) {
if(value.reporter.indexOf(v) > -1) {
cnt++;
}
}
}
return cnt;
});
return answer;
}
사실 제대로 짠 건지는 모르겠는데 그래도 통과를 했으니 패스..
반응형
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/자바스크립트(JS)] 실패율 (0) | 2022.04.21 |
---|---|
[프로그래머스/자바스크립트(JS)] [카카오 인턴] 키패드 누르기 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 숫자 문자열과 영단어 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 신규 아이디 추천 (1) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 로또의 최고 순위와 최저 순위 (0) | 2022.04.20 |