신고 결과 받기 - 1단계, js

shong1332·2022년 4월 23일
0

코테

목록 보기
1/2
function solution(id_list, report, k) {
let 답 = [];
let 중복제거데이터 = [];
let 피의자 = [];
let 민폐꾼 = [];
let 메일받을사람 = [];

//메일함 생성
let 메일함 = id_list.map((i) => {
	return { 이름: i, 메일받을횟수: 0 };
});


// report의 중복을 제거하여준다.
report
	.filter((v, i) => report.indexOf(v) === i)
	.map((i, idx, arr) => {
		피의자 = [...피의자, i.split(" ")[1]];
		중복제거데이터 = [...중복제거데이터, i];
	});
    
//신고당한 횟수를 세어 k 값 보다 많이 신고 된 사람을 민폐꾼으로 지정.
id_list.map((i, idx) => {
	const 신고당한횟수 = 피의자.filter((j) => j === i).length;

	if (신고당한횟수 >= k) {
		민폐꾼 = [...민폐꾼, i];
	}
});

// 중복신고가된 데이터에 민폐꾼이 된 사람을 비교하여 누가 메일을 받을 것인지 지정
중복제거데이터.map((i) => {
	민폐꾼.map((j) => {
		if (i.split(" ")[1] === j) {
			메일받을사람 = [...메일받을사람, i.split(" ")[0]];
		}
	});
});

//메일받을 사람에게 메일전달
메일받을사람.map((i) => {
	메일함.map((j) => {
		if (j.이름 === i) {
			j.메일받을횟수 = j.메일받을횟수 + 1;
		}
	});
});

//메일함을 돌며 정답으로 제출할 배열 생성
메일함.map((i) => {
	답 = [...답, i.메일받을횟수];
});
return 답;
}

최초 시도했던 코드는 중복제거가 되어 있지 않은 코드로 시행하여 무참히 실패하였다.
중복이 제거된 배열을 사용하지않고 바로 report를 돌렸기 때문이였다.

한번 실패하고 아무리봐도 실수를 찾지 못하고 코드를 싹다 엎어보았는데 이쪽이 문제였던것 것이다.
로직은 변하지 않았지만 이쪽이 실수가 있다는걸 알 수 있었다.

그리고 코드를 돌려보면

실패하였음을 알 수 있는데 사실 이유는 안보고도 찾을 수 있다.

맵을 몇번, 그리고 몇중으로 돌렸는지 내가봐도 아직은 내가 많이 부족함을 느끼고있다.

하지만 오답은 없고 시간초과에 의한 실패라니 기분이 너무 좋았다.

실패였지만,
하지만 빠이링.

다름주 문제는 깔끔하게 통과해봐야지.

profile
히히히

0개의 댓글