*문제 : computers=[[1, 1, 0], [1, 1, 0], [0, 0, 1]] / n =3 1. 포인트는 해당 인덱스를 방문했는지 여부 => visited 2. 방문하지 않았으면 dfs 함수 실행 => dfs(i) 3. dfs(i) 실행 후 해당 인덱스는 visited[i] = true로 변경 4. 2차원배열의 값이 1 && 방문하지 않았다면 => dfs(i) 실행 (1) 내 풀이 function solution(n, computers) { let answer = 0; let visited = new Array(n).fill(false) const dfs =(start)=>{ visited[start] =true; for(let i = 0; i
*문제 : numbers =[4,1,2,1,] / target =4 이해가 안 되서 재귀함수를 직접 그려보니, 제대로 이해할 수 있었음 (1) 수행동작인 dfs 더하기 / 빼기 부분 (2) return 하는 조건 => 배열의 길이 (3) answer 계산하는 조건 => target값과 sum값이 같을 경우 (1) 내 풀이 function solution(numbers, target) { let answer = 0; const dfs = (index,sum)=>{ if(index ===numbers.length){ if( sum === target){ answer ++; } return; } dfs(index+1, sum+ numbers[index]) dfs(index+1, sum- numbers[inde..
(1) 내 코드 function solution(clothes) { let clothesMap ={}; //1. 의상의 종류가 중요함 clothes.forEach(arr=>{ const [name,type] = arr if(clothesMap.hasOwnProperty(type)){ clothesMap[type] ++; } else{ clothesMap[type]=1 } }) //console.log(clothesMap) //{ headgear: 2, eyewear: 1 } let answer = 1; //2. 의상의 종류의 경우의 수 : 착용과 착용하지 않았을 모든 경우 //2-1. 착용하지 않은 경우를 위해 +1 for( let val in clothesMap){ //console.log(val) /..
function solution(numbers) { let answer = numbers .map(number => number.toString()) .sort((a,b)=>(b+a)-(a+b)) .join('') return answer[0] ==='0' ? '0' :answer } 1. 숫자를 문자열로 변경하여 sort로 정렬하기 2. a=6 / b=10 일경우, '610'과 '106'을 비교해서 내림차순으로 큰 수가 앞에 오도록 정렬하기 .sort((a,b)=>(b+a)-(a+b)) 3. numbers [0,0,0]인 경우, 000으로 나와서 오류 => 0 처리하기 끝.
(1) 내 풀이 function solution(array, commands) { let sort = [] let answer = []; commands.map(command=>{ sort = array .slice(command[0]-1,command[1]) .sort((a,b)=>a-b) .filter((x,index)=>index === command[2]-1) answer.push(sort) }) return answer.flat() } * commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]] 1. map을 돌려서 각각의 배열의 index를 사용함 2. slice를 사용하여 구간 값 추출 3. sort를 사용하여 오름차순 정렬 4. filter를 사용하여 k번째수 추출 ..
(1) 내 풀이 function solution(phone_book) { phone_book.sort(); for (let i = 0; i{ hash[num] = 1 }) for (let num of phone_book ){ for (let i = 1 ; i< num.length ; i++) { let str = num.slice(0, i) if(hash[str]){ return false } } } return true; } 1. 해시에 key,value값 넣기 2. 문자를 반복문으로 해당 데이터를 갖고 있는지 확인하기 끝.