diff --git "a/level-1/353円202円264円354円240円201円.js" "b/level-1/353円202円264円354円240円201円.js" index 1b5e81c..c080eaf 100644 --- "a/level-1/353円202円264円354円240円201円.js" +++ "b/level-1/353円202円264円354円240円201円.js" @@ -3,7 +3,7 @@ //정답 1 - codeisneverodd function solution(a, b) { var answer = 1234567890; - answer = a.reduce((x, y, i) => x + y * b[i], 0) + answer = a.reduce((x, y, i) => x + y * b[i], 0); return answer; } @@ -11,8 +11,19 @@ function solution(a, b) { function solution(a, b) { var answer = 0; - for(i=0; i { - //Initialization - reportedCount[element] = 0 - mailCount[element] = 0 - reportedBy[element] = [] - }) - reportSet.forEach((element) => { - const $id = element.split(" ")[0] - const $reported = element.split(" ")[1] - reportedCount[$reported] += 1 - reportedBy[$reported].push($id) - }) - for (const reportedId in reportedCount) { - if (reportedCount[reportedId]>= k) { - reportedBy[reportedId].forEach((reporter) => { - mailCount[reporter] += 1 - }) + //report를 set을 이용하여 중복제거, 각 id 당 신고당한 횟수 reportedCount에 저장, + //각 id를 신고한 사람 array를 reportedBy에 저장, + //k번 이상 신고당한 id를 신고한 id가 받을 메일 수를 mailCount에 저장 + //answer에 mailCount에 저장된 값을 id_list와 같은 id 순서로 저장. + const reportSet = new Set(report); + const reportedCount = {}; //{"id": Number(count)} + const reportedBy = {}; //{"id":[]} + const mailCount = {}; //{"id":Number(count)} + id_list.forEach((element) => { + //Initialization + reportedCount[element] = 0; + mailCount[element] = 0; + reportedBy[element] = []; + }); + reportSet.forEach((element) => { + const $id = element.split(" ")[0]; + const $reported = element.split(" ")[1]; + reportedCount[$reported] += 1; + reportedBy[$reported].push($id); + }); + for (const reportedId in reportedCount) { + if (reportedCount[reportedId]>= k) { + reportedBy[reportedId].forEach((reporter) => { + mailCount[reporter] += 1; + }); + } } - } - var answer = [] - id_list.forEach((element) => { - answer.push(mailCount[element]) - }) + var answer = []; + id_list.forEach((element) => { + answer.push(mailCount[element]); + }); - return answer + return answer; } //정답 2 - jaewon1676 function solution(id_list, report, k) { - let answer = new Array(id_list.length).fill(0) - let report_list = {} // 신고당한 ID + let answer = new Array(id_list.length).fill(0); + let report_list = {}; // 신고당한 ID - // key, value 형식의 report_list 객체를 만든다. - id_list.map((user) => { - report_list[user] = [] //key = userid , value = 빈 배열을 가지는 객체 - }) - // report_list { muzi: [], frodo: [], apeach: [], neo: [] } + // key, value 형식의 report_list 객체를 만든다. + id_list.map((user) => { + report_list[user] = []; //key = userid , value = 빈 배열을 가지는 객체 + }); + // report_list { muzi: [], frodo: [], apeach: [], neo: [] } - // 유저가 신고한 ID를 report_list 객체에 넣어주기 위해 순회한다. - report.map((user) => { - const [user_id, report_id] = user.split(" ") - // report 값에서 띄어쓰기로 구분된 문자열을 자르고 user_id, report_id로 각각 넣어준다. - if (!report_list[report_id].includes(user_id)) { - report_list[report_id].push(user_id) - // 배열에 포함하는지 여부를 확인하여 포함하지 않을때 신고자의 이름을 추가하였다. + // 유저가 신고한 ID를 report_list 객체에 넣어주기 위해 순회한다. + report.map((user) => { + const [user_id, report_id] = user.split(" "); + // report 값에서 띄어쓰기로 구분된 문자열을 자르고 user_id, report_id로 각각 넣어준다. + if (!report_list[report_id].includes(user_id)) { + report_list[report_id].push(user_id); + // 배열에 포함하는지 여부를 확인하여 포함하지 않을때 신고자의 이름을 추가하였다. + } + }); + for (const key in report_list) { + // report_list의 index 순회 + if (report_list[key].length>= k) { + report_list[key].map((user) => { + answer[id_list.indexOf(user)] += 1; + }); + } } - }) - for (const key in report_list) { - // report_list의 index 순회 - if (report_list[key].length>= k) { - report_list[key].map((user) => { - answer[id_list.indexOf(user)] += 1 - }) - } - } - return answer + return answer; } //정답 3 - prove-ability function solution(id_list, report, k) { - // 사용자 길이의 빈 배열을 만든다 0 - var answer = new Array(id_list.length).fill(0) - // 신고된 내용 정리할 객체 선언 - const obj = {} - // 신고된 내용 정리할 객체 사용자 아이디로 초기화 - id_list.forEach((id) => { - obj[id] = new Set() - }) - // 신고 리스트를 조회하며 신고 내용 객체에 정리 - // set.add 를 활용해 같은 사용자의 중복 신고 제거 - report.forEach((str) => { - const [reporter, target] = str.split(" ") - obj[target].add(reporter) - }) - // obj value 하나씩 접근 - for (const value of Object.values(obj)) { - // 신고당한 횟수가 정지 기준에 적합하다면 - if (value.size>= k) { - // 해당 유저를 신고한 사람들 - for (let item of value) { - // 인덱스 구해서 증가 - let index = id_list.indexOf(item) - answer[index]++ - } + // 사용자 길이의 빈 배열을 만든다 0 + var answer = new Array(id_list.length).fill(0); + // 신고된 내용 정리할 객체 선언 + const obj = {}; + // 신고된 내용 정리할 객체 사용자 아이디로 초기화 + id_list.forEach((id) => { + obj[id] = new Set(); + }); + // 신고 리스트를 조회하며 신고 내용 객체에 정리 + // set.add 를 활용해 같은 사용자의 중복 신고 제거 + report.forEach((str) => { + const [reporter, target] = str.split(" "); + obj[target].add(reporter); + }); + // obj value 하나씩 접근 + for (const value of Object.values(obj)) { + // 신고당한 횟수가 정지 기준에 적합하다면 + if (value.size>= k) { + // 해당 유저를 신고한 사람들 + for (let item of value) { + // 인덱스 구해서 증가 + let index = id_list.indexOf(item); + answer[index]++; + } + } + } + + return answer; +} + +//정답 4 - prove-ability +function solution(id_list, report, k) { + // 사원 리스트 0으로 초기화 - 받은 메일 숫자 세기 + var answer = Array.from({ length: id_list.length }).fill(0); + // 신고 내용 객체 초기화 - 신고된 내용 정리 + const reportObj = {}; + // 신고건 반복문으로 하나씩 접근 + for (let i = 0, len = report.length; i < len; i++) { + const [userId, reportUserId] = report[i].split(" "); + // 신고 내용 객체에 신고당한 사람이 있고 이전에 신고하지 않았다면 추가 + if (reportObj[reportUserId]) { + if (!reportObj[reportUserId].includes(userId)) { + reportObj[reportUserId] = [...reportObj[reportUserId], userId]; + } + // 신고 내용 객체에 신고당한 사람이 없다면 추가 + } else reportObj[reportUserId] = [userId]; + } + // 만들어진 신고 내용 객체로 반복적으로 접근 + for (const item of Object.values(reportObj) + .filter((v) => v.length>= k) + .flatMap((v) => v)) { + // 인덱스로 접근해 메일 카운트 증가 + const index = id_list.findIndex((v) => v === item); + answer[index]++; } - } - return answer + return answer; } diff --git "a/level-1/354円227円206円353円212円224円-354円210円253円354円236円220円-353円215円224円355円225円230円352円270円260円.js" "b/level-1/354円227円206円353円212円224円-354円210円253円354円236円220円-353円215円224円355円225円230円352円270円260円.js" index 7c56213..018864e 100644 --- "a/level-1/354円227円206円353円212円224円-354円210円253円354円236円220円-353円215円224円355円225円230円352円270円260円.js" +++ "b/level-1/354円227円206円353円212円224円-354円210円253円354円236円220円-353円215円224円355円225円230円352円270円260円.js" @@ -3,7 +3,7 @@ //정답 1 - codeisneverodd function solution(numbers) { var answer = -1; - answer = 45 - numbers.reduce((a, b) => a + b) + answer = 45 - numbers.reduce((a, b) => a + b); return answer; } @@ -11,7 +11,7 @@ function solution(numbers) { function solution(numbers) { var answer = 0; for (let i = 0; i < 10; i++) { - answer += numbers.includes(i) ? 0 : i + answer += numbers.includes(i) ? 0 : i; } return answer; } @@ -20,22 +20,33 @@ function solution(numbers) { function solution(numbers) { var answer = -1; - let arr = [0,1,2,3,4,5,6,7,8,9]; + let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let arr_sum = 0; let numbers_sum = 0; - for(i=0; i a + b * (signs[i] ? 1 : -1), 0) + answer = absolutes.reduce((a, b, i) => a + b * (signs[i] ? 1 : -1), 0); return answer; } @@ -11,22 +11,33 @@ function solution(absolutes, signs) { function solution(absolutes, signs) { var answer = 0; for (let i = 0; i < absolutes.length; i++) { - answer += signs[i] ? absolutes[i] : -1 * absolutes[i] + answer += signs[i] ? absolutes[i] : -1 * absolutes[i]; } return answer; } //정답 3 - jaewon1676 function solution(absolutes, signs) { - var answer = 0 - for(var i=0; i sum += Number(element)) - answer = x % sum === 0 ? true : false + const num = x.toString().split(""); + let sum = 0; + num.forEach((element) => (sum += Number(element))); + answer = x % sum === 0 ? true : false; return answer; }

AltStyle によって変換されたページ (->オリジナル) /