프로그래머스 / Level1 , 2022 KAKAO BLIND RECRUITMENT , 신고 결과 받기 자바스크립트 , JS
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=javascript
풀이
조금 이 문제 풀면서 어이가 없었다.
이유는 이 문제를 올해 초중반에 파이썬으로 풀었는데 솔직히 2시간동안 삽질만 했었던 문제다.
물론 그때 코테 실력이 좋지는 않았음. 그래도 그때 못푼 기억에 이번엔 얼마만에 풀려나 다시 풀어봤는데
자바스크립트로 푸는데 5분도 안걸렸다....(그때 코테만 치루고 문제 다시 안봐서 풀이는 모르는 상태였음)
무서운게 시험 치를때는 하나에 꽂혀서 그 방법으로만 풀려고해서 삽질만 오지게 했는데 평상시에 그냥 푸니까 첨에 딱 생각한 풀이 그대로 로직이 잘 구현되고 잘풀렸다.
체감상 2021년 신규아이디 추천 문제가 더 시간 걸렸음.
시험볼때도 안풀리면 차분하게 다시 보고 이런저런 방법을 적용해 봐야겠다. (말로는 쉽다)
이 문제 푼 방법은
1. 우선 set 을 사용해서 중복된 것들은 다 지워준다. (신고자가 동일한 상대를 신고하는걸 방지)
2. 이후 신고 당한 사람들의 누적 신고횟수를 카운트 해준다. 이때 dict를 사용한다.
3. 이후 루프를 한 번 더돌아서 누적신고횟수가 k와 같거나 넘었는지 확인해주고 true 라면 따로 선언한 cnt에 카운트 해준다.
4. 이후 id_list를 돌면서 각 id가 메일을 몇번 받는지만 체크해주면 된다.
정답
function solution(id_list, report, k) {
var answer = [];
let dict = {};
let cnt = {};
id_list.map((v) => {
[dict[v], cnt[v]] = [0, 0];
});
report = new Set(report);
report = [...report];
report.map((v) => {
let [A, B] = v.split(" ");
dict[B] += 1;
});
report.map((v) => {
let [A, B] = v.split(" ");
if (dict[B] >= k) cnt[A] += 1;
});
id_list.map((v) => {
answer.push(cnt[v]);
});
return answer;
}
'알고리즘 공부 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 / Level2 , 연습문제 , 행렬의 곱셈 자바스크립트 , JS (0) | 2022.09.21 |
---|---|
프로그래머스 / Level2 , Summer/Winter Coding(~2018) , 점프와 순간 이동 자바스크립트 , JS (0) | 2022.09.20 |
프로그래머스 / Level1 , 2022 KAKAO TECH INTERNSHIP , 성격 유형 검사하기 자바스크립트 , JS (1) | 2022.09.20 |
프로그래머스 / Level1 , 2021 KAKAO BLIND RECRUITMENT , 신규 아이디 추천 자바스크립트 , JS (0) | 2022.09.20 |
프로그래머스 / Level2 , 2017 팁스타운 , 예상 대진표 자바스크립트 , JS (0) | 2022.09.20 |