배운점
빈 배열
자바스크립트에서 0으로된 빈배열을 생성하기 위해서는 다음 처럼 Array를 생성한다.
const answer = new Array(id_list.length);
// [ <4 empty items> ]
그 다음 fill 메소드를 사용하여 0을 채워주는 것이다.
answer.fill(0);
//[ 0, 0, 0, 0 ]
const 배열 , 객체
나는 const로 선언을 하면 절대 바꿀 수 없다고 생각했다.
그런데 그게 아니였다. const 는 재선언을 할 수 없는 것이다.
배열의 pop push , 객체의 키값 추가 모든 것이 가능했다. 아예 잘 못이해하고 있었다.
const report_list = {};
id_list.map((user) => {
report_list[user] = [];
});
console.log(id_list); //[ 'muzi', 'frodo', 'apeach', 'neo' ]
console.log(report_list); // { muzi: [], frodo: [], apeach: [], neo: [] }
아래에서는 split으로 나누어진 string을 분해해서 할당 받을 수 있다는 것과
includes 메소드에 대해 배웠다.
report.map((user) => {
const [user_id, report_id] = user.split(" ");
if (!report_list[report_id].includes(user_id)) {
report_list[report_id].push(user_id);
}
});
includes
문자열에서 해당 문자가 포함되어있는지 여부를 boolean으로 나타낸다.
'abzcd'.includes( 'z' )
다음 처럼 시작 index를 정해줄 수도 있다. default가 0이기 때문에 3으로 값을 넣는다면 아래 문자열에서는 'cd' 가 될 것이다.
'abzcd'.includes( 'z', 3 )
또한 includes 는 배열에서도 사용이 가능하다.
index 부분이 음수일 경우에는 음수 + arr.length 가 index 가 된다.
const arr = [1, 2];
document.writeln(arr.includes(1)); // true
document.writeln(arr.includes(3)); // false
document.writeln(arr.includes(1, 1)); // false
document.writeln(arr.includes(1, 2)); // false
document.writeln(arr.includes(2, -1)); // true
indexOf
배열 안에서 찾으려는 값과 정확하게 일치(===)하는'첫번째' element의 index를 리턴한다.
lastIndexOf
배열 안에서 찾으려는 값과 정확하게 일치(===)하는 '마지막' element의 index 를 리턴한다.
두 함수 모두 찾으려는 값이 배열에 없으면 -1을 리턴한다.
for in , for of
for in은 객체
for of는 배열
참고한 풀이
function solution(id_list, report, k) {
const answer = new Array(id_list.length);
answer.fill(0)
const report_list = {} //
id_list.map((user)=>{
report_list[user] = [] //key로 userid를 value로 빈 배열을 가지는 객체
})
report.map((user)=>{
const [user_id, report_id] = user.split(' ')
if(!report_list[report_id].includes(user_id)){
report_list[report_id].push(user_id)
}
})
for(const key in report_list){
if(report_list[key].length >= k){ //이용정지 유저
report_list[key].map((user)=>{
answer[id_list.indexOf(user)] += 1
})
}
}
return answer;
}
내 풀이
function solution(id_list, report, k) {
var answer = [];
let dic = {}
let ans = {}
id_list.map(el=>{
dic[el] = []
ans[el] = 0
})
report.map(el=>{
const [reporter, receiver] = el.split(" ")
if (!dic[receiver].includes(reporter))
dic[receiver].push(reporter)
})
for (el in dic){
if (dic[el].length>=k){
dic[el].map(v=>{
ans[v]+=1
})
}
}
for (el in ans){
answer.push(ans[el])
}
return answer;
}
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
자바스크립트 순열 , 조합 , 중복조합 (0) | 2022.06.14 |
---|---|
프로그래머스/JS 신고결과받기 (2) (0) | 2022.06.13 |
백준/JS 10828 (0) | 2022.06.12 |
백준/JS 10926 (0) | 2022.06.12 |
백준/JS 1000 (0) | 2022.06.12 |