프로그래머스 2022 카카오 블라인드 코딩테스트 문제이다.
문제 풀러가기
자세한 문제 설명은 위 링크를 통해 직접 읽어보시길 바랍니다. ㅎㅎ
문제 예시 1번 객체
key: 신고 당한 유저의 id
value: 신고를 한 유저의 id 배열
const report_list = {
muzi: [apeach]
frodo: [muzi, apeach] - 정지
apeach: []
neo: [frodo, muzi] - 정지
}
function solution(id_list, report, k) {
const answer = new Array(id_list.length);
answer.fill(0)
const report_list = {} //
id_list.map((user)=>{
report_list[user] = [] //key로 userid를 value로 빈 배열을 가지는 객체
})
report.map((user)=>{
const [user_id, report_id] = user.split(' ')
if(!report_list[report_id].includes(user_id)){
report_list[report_id].push(user_id)
}
})
for(const key in report_list){
if(report_list[key].length >= k){ //이용정지 유저
report_list[key].map((user)=>{
answer[id_list.indexOf(user)] += 1
})
}
}
return answer;
}
const answer = new Array(id_list.length);
answer.fill(0)
answer
배열을 id_list의 크기만큼 할당하고fill
함수를 사용하여 0으로 초기화한다.
id_list.map((user)=>{report_list[user] = []})
report_list
객체에 key는 uesr의 id 값을 value는 신고한 사람을 담기위한 빈 배열을 추가한다.
report.map((user)=>{
const [user_id, report_id] = user.split(' ')
if(!report_list[report_id].includes(user_id)){
report_list[report_id].push(user_id)
}
})
report
의 값이["muzi frodo", ...]
와 같이 '신고한 id 신고 당한 id' 형식의 띄어 쓰기로 구분된 문자열을 split으로 자르고 각각user_id
와report_id
로 나눠주었다.
그리고 배열에 포함하는지 여부를 확인하여 포함하지 않을때 신고자의 이름을 추가하였다.
for(const key in report_list){
if(report_list[key].length >= k){
report_list[key].map((user)=>{
answer[id_list.indexOf(user)] += 1
})
}
}
report_list
의 배열길이가 k값 이상이면 정지된 유저이다.
answer에 해당 유저를 신고한 유저가 받은 메일을 수를 +1하여준다.
더 좋은 방법이 있으거나 고쳤으면 하는 부분이 있는 분은 언제든지 댓글 달아주세요 👍
풀이가 너무 깔끔하셔서 정보 얻어 갑니다 감사합니다 🙇♀️