[프로그래머스] 신고 결과 받기
https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스의 신고 결과 받기 문제이다.
문제 설명
신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.
- 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
- 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
- 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
- k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
- 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다
입력으로는 아이디 리스트와 신고된 report, 경고 제한 횟수 이렇게 총 3개의 입력이 들어온다.
Id_list | report | k |
["muzi", "frodo", "apeach", "neo"] | ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] | 2 |
["con", "ryan"] | ["ryan con", "ryan con", "ryan con", "ryan con"] | 3 |
문제를 풀기 전에 주의해야 할 점
1. 신고를 했을 때 그 사람이 정지를 먹으면 신고를 한 사람이 메일을 받는다.
2. 같은 사람을 중복으로 신고하더라도 경고는 1회만 적용된다.
이 정도이다.
처음에 무지성으로 풀다가 for문이 너무 많이 나와서 이렇게 맞아도 별 의미가 없겠다 싶어서
hash 자료구조를 써야겠다고 생각했다.
문제풀이
위에 언급했듯이 객체와 hash구조를 이용해서 해보겠다.
1. 먼저 id_list를 이용해 유저가 당한 경고 횟수와 그 유저가 신고한 유저들을 저장할 것이다.
let list = id_list.reduce((user,index)=>{
2. 중복 신고 방지를 위해 set을 이용해준다.
참고
https://onlydev.tistory.com/137