[TIL] 카테고리/알고리즘 문제풀기

[자바스크립트] 프로그래머스 Lv.1 신고 결과 받기

티레이니 2022. 6. 3. 11:39

 

Lv.1 의 마지막 문제!! 내일은 Lv.2를 도전해볼까 백준으로 갈까.. 고민된다 ㅋㅋ...

점점 더 어려운걸 도전하는게 맞는거 같기도 하고, 아직 Lv.1 도 좀 어려운게 있는데 + 효율적인 코드로 못 푸는데..?

ㅋㅋㅋㅋ 내일 한번 도전해보고 생각해야겠다!

 

let reported_by = id_list.map((id) => [])
let answer = id_list.map((id) => 0)

report = report.map((r) => r.split(' ')).forEach((r, i) => {
  if (! reported_by[id_list.indexOf(r[1])].includes(r[0])) {
  reported_by[id_list.indexOf(r[1])].push(r[0])}
})

reported_by.forEach((r,i) => {
  if (r.length >= k) {
    r.forEach((user) => {
      answer[id_list.indexOf(user)] += 1
    })
  }
})

 

 

누가 신고했는지 정리해서 담아줄 배열 1개, 답안 배열 1개 각각 id 리스트의 길이만큼씩 요소를 가지게!

 

신고 명단은 공백을 기준으로 나눈 배열로 바꾸어주고 ( ["muzi frodo"] -> [ ["muzi", "frodo"] ]

각 신고 마다 신고당한 id의 인덱스를 id리스트에서 찾아서, reported_by 배열의 해당 인덱스에 push,

여기서 중복은 미리 걸러준다 (-> 미리 거르지 않고 나중에 Set을 쓰는 방법도 있다는걸 늦게 깨달았다. 아무튼.)

 

어떤 유저를 신고한 사람의 명단이 K와 같거나 많으면, 정지 당한다 -> 신고한 사람에게 이메일이 간다

reported_by 배열 내부의 배열 각각의 길이를 재서 K와 같거나 많다면,

해당 배열안에 들어있는 신고자들의 인덱스를 id리스트에 찾아서, 이에 해당하는 answer의 인덱스를 +1