[JavaScript] 프로그래머스 - 신고 결과 받기 (1단계)

배똥회장·2022년 7월 28일
0

📝 문제

프로그래머스 > 코딩테스트 연습 > 2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기


📝 답안

📌 작성 코드

function solution(id_list, report, k) {
    let answer = new Array();
    let list = new Array();
    let count = new Array();
    
    for (let i = 0; i < id_list.length; i++) {
        list[id_list[i]] = new ID();
        count[id_list[i]] = 0;
        answer[i] = 0;
    }
    
    for (let i = 0; i < report.length; i++) {
        let s = report[i].split(" ");
        
        if (list[s[0]].check(s[1])) continue;
        
        list[s[0]].add(s[1]);
        count[s[1]]++;
    }
    
    for (let i = 0; i < id_list.length; i++) {
        let arr = list[id_list[i]].arr;
        
        for (let j = 0; j < arr.length; j++) {
            if (count[arr[j]] >= k) answer[i]++;
        }
    }
    return answer;
}

class ID {
    constructor(){
        this.arr = new Array();
    }
    
    add = function(name) {
        this.arr.push(name);
    }
    
    check = function(name) {
        if (this.arr.indexOf(name) != -1) return true;
        return false;
    }
}

📌 코드 풀이

let answer = new Array();
let list = new Array();
let count = new Array();
for (let i = 0; i < id_list.length; i++) {
    list[id_list[i]] = new ID();
    count[id_list[i]] = 0;
	answer[i] = 0;
}
  • list : 유저가 신고한 아이디를 담기 위한 배열
  • count : 유저의 신고 당한 수를 카운트하기 위한 배열
  • answer : 유저가 신고한 아이디가 정지된 개수
  • 자바스크립트의 배열의 경우 자료형을 정해놓지 않고 선언하기 때문에 한 번은 값을 넣어줘야 나중에 null이 생기지 않음
for (let i = 0; i < report.length; i++) {
	let s = report[i].split(" ");
   	-- 중략 --
}
  • report은 각각 띄어쓰기로 구분되어 있기 때문에 split으로 문자열 나누기
for (let i = 0; i < report.length; i++) {
	-- 중략 --
	if (list[s[0]].check(s[1])) continue;
	list[s[0]].add(s[1]);
	count[s[1]]++;
}
  • 만약 유저가 신고한 적 있는 아이디면 continue, 없으면 배열에 추가하고 신고 당한 수 +1
for (let i = 0; i < id_list.length; i++) {
	let arr = list[id_list[i]].arr;	    
	for (let j = 0; j < arr.length; j++) {
		if (count[arr[j]] >= k) answer[i]++;
	}
}
  • id_list 순서로 해당 유저가 신고한 아이디가 k를 넘었는지 체크
profile
어쩌면 개발자

0개의 댓글