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

shong1332·2022년 4월 23일
0

코테

목록 보기
2/2


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

	report
		.filter((v, i) => report.indexOf(v) === i)
		.map((i, idx, arr) => {
			피의자 = [...피의자, i.split(" ")[1]];
			중복제거데이터 = [...중복제거데이터, i];
		});

	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]];
			}
		});
	});

	id_list.map((i) => {
		const 임시답 = 메일받을사람.filter((j) => j === i).length;
		답 = [...답, 임시답];
	});

	return 답;
}

필요없는 메일함을 지울 수 있었다.
실패가 사라진건 아니지만 이번주 수요일에 코드 리뷰 받으면서 극복 할 수 있을거라 생각한다.

근데 아무리 생각해도 로직은 틀리지 않은것 같은데 방법을 모르겠다.

  1. 최초 reprot의 중복을 제거한다.
  2. report 에서 신고 받을 사람을 색출한다.
  3. 신고 받은 사람중 k 값을 넘는 횟수의 신고를 받은 사람을 한번 색출한다.
  4. 색출된 사람을 신고한 사람에게 메일을 보낸다.
  5. 보낸 메일 횟수를 id_list 순서에 맞게 배열로 만들어 답을 제출한다.

인데.. 어떻게 하면 시간안에 통과 할 수 있도록 메서드를 잘 활용 할 수 있을까..

profile
히히히

0개의 댓글