[Programmers]92334通報結果の受信


プログラマはレベル別に問題を分けます.でも1級で思い出せないのは恥ずかしい
どんな問題を見ても迷わず努力しなければならない.

質問する



ソース:プログラマコードテスト練習

に答える


問題を簡単に解く条件はこうです.
申告者が申告したリストの中でどれだけの人が使用を停止されたかという問題があります.
function solution(id_list, report, k) {
  const answer = Array(id_list.length).fill(0);
  const info = {};
  for (let id of id_list) { // info 객체 초기화
    info[id] = {
      reported: 0,
      reporters: [],
    };
  } 

  for (let data of report) { 
    const [reporter, reportedPerson] = data.split(' ');

    if (!info[reportedPerson].reporters.includes(reporter)) {
      // 중복 신고 방지
      info[reportedPerson].reported++;
      info[reportedPerson].reporters.push(reporter);
    } 
  } 

  for (let data in info) { // 정지당한 사람 필터링
    if (info[data].reported >= k) {
      for (let reporter of info[data].reporters) {
        answer[id_list.indexOf(reporter)]++;
      }
    }
  }

  console.log(answer);

  return answer;
}
これは、infoオブジェクトを作成して、申告者と申告回数を格納し、すべてのデータを加工し、パラメータに基づいてフィルタリングするコードです.
アルゴリズムの問題を真剣にやろうと決心したのは初めてで、コードが乱れているように見えます.
重複除外部分でSetを使用すると、よりクリーンになる可能性があります.