function solution(n, arr1, arr2) { const result = arr1.reduce((acc,cur,index)=>{ const check = checkPosition( addZero(n,cur.toString(2)), addZero(n,arr2[index].toString(2)) ) return acc = [...acc,check ] },[]) return result; } // 이진수 변환후 반복문을 이용해 각자릿수를 비교해야하는데, // 자리수가 맞지 않는 경우가 존재하여 정해진 자리수만큼 0을 더해주는작업 const addZero = (n, string) => { for(let i = 0; i < n; i++){ if(string.length < n){ string = ..
function solution(food) { const reduceResult = food.reduce((acc,cur,index)=>{ // 0번째 인덱스는 항상 물이기때문에 예외처리 if(!index) return acc for(let i = 0; i < Math.floor(cur/2); i++){ // 절반을 나누고 반내림하여 두 사람이 나눌수 있는 갯수 도출 // 도출된 숫자만큼 반복문을 통하여 음식 번호를 스트링으로 추가 acc += index } return acc },'') // 한쪽을 구한뒤 중간에 물이 배치되고 리버스되는 형식이므로 완성된 텍스트를 배열 처리 , 리버스 후 합치기 return reduceResult + 0 + reduceResult.split('').reverse().j..
function solution(land) { // 열,길이,깊은복사 const column = 4; const temp = land.slice(); const tempLength = temp.length; // 1,2,3,5 1,2,3,5 1,2,3,5 // 5,6,7,8 -> 10,11,12,11 -> 10,11,12,11 // 4,3,2,1 4,3,2,1 16,15,13,13 // 이전의 행을 더하는 방법으로 작성, 0번째의 이전은 없으므로 1부터 시작 for (let i = 1; i < tempLength; i++) { for (let j = 0; j < column; j++) { // 이중배열 반복문으로 각 행의 열 순회하며 이전 행의 최대값을 더해준다. 같은 열을 밟을수 없기때문에 필터를 사용..
// https://school.programmers.co.kr/learn/courses/30/lessons/49993 function solution(skill, skill_trees) { // 배열로 비교하기 위한 배열화 작업 const split_skill = skill.split(''); const split_skill_trees = skill_trees.map(skillTree => skillTree.split('')); // skill에 존재 하지 않는 스킬은 순서와 상관없기 때문에 필터로 제거하여 스킬트리에 존재하는것만 남기기 const filterItem = split_skill_trees.map(skillTree => skillTree.filter(skill=> split_skill.in..
function solution(numbers, target) { // https://school.programmers.co.kr/learn/courses/30/lessons/43165 let 방법의수 = 0; // 0,0으로 시작하여 모든 경우의 수 탐색 재귀함수(0, 0); function 재귀함수 (인덱스, 합) { // 모든 index를 탐색 if( 인덱스 === numbers.length){ // index와 numbers 길이와 같아지면 종료한다 if(합 === target ){ // 합과 타겟과 동일하다면 방법의수 ++ 방법의수++ } // 탈출 return } // 해당 노드에서 +,-를 모두 실행한다. 재귀함수(인덱스+1, 합 + numbers[인덱스]); 재귀함수(인덱스+1, 합 - n..
function solution(citations) { //https://school.programmers.co.kr/learn/courses/30/lessons/42747#qna // 1. 논문을 많이 인용된 순으로 정렬 // 2. index와 citations 두 숫자를 비교하며 내려갑니다. // 3. 두 숫자가 같아지거나 citations가 index보다 더 작아지기 시작하는 직전의 숫자를 찾아냅니다 return citations.slice(0) .sort((a,b)=> b - a) .reduce((acc,cur,index,array)=> index < array[index] ? acc += 1 : acc,0) } 프로그래머스 문제를 이해하기 너무 어려워서 위키피아 설명을 참조했습니다. for문으로..
// https://school.programmers.co.kr/learn/courses/30/lessons/12981 function solution(n, words) { let answer; let playerNumber = 1; let turn = 1; const pastWords = []; for(let i = 0; i { return pastWord.substr(-1) === currentWord.substr(0,1) ? false : true } const checkOneWord = (string) => { return string.length === 1 ? true : false } const checkSameWord = (pastWords,word) => { return pastWords...
// https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=javascript function solution(progresses, speeds) { var answer = []; // 소요되는 작업일수로 변경 const days = progresses.slice(0).reduce((acc,cur,index,array)=>{ let count = 0; for(cur; cur < 100; speeds[index] ){ count ++ cur = cur + speeds[index] } return acc = [...acc, count] },[]) // 배열 순회 마지막 인덱스와 배포갯수 설정(기본 자기자신 1) let lastInd..
// https://school.programmers.co.kr/learn/courses/30/lessons/42862 function solution(n, lost, reserve) { // 여벌이 있는 학생만 체육복 빌려줄수있다 // 여벌을 가지고 있는 학생도 도난을 당할수있다. // lost, reserve는 각 학생들의 index //전체 학생 배열 생성 const student = new Array(n).fill(1) let max = 0; // 분실학생 for loop -- for(let i = 0; i < lost.length; i++){ student[lost[i]-1] -= 1 } // 여분데이터 for loop ++ for(let i = 0; i < reserve.length; i++)..
// https://school.programmers.co.kr/learn/courses/30/lessons/64061 function solution(board, moves) { const bucket = []; let result = 0; // board 인덱스별 board의 가로 위에서 아래로 // moves 배열 각 원소들의 값은 board의 index이며 해당하는 위치에 가장 위에 있는 인형을 가지고온다 for (const move of moves){ for(let i=0; i= 2){ // 새로 추가된것과 이전값을 비교해 동일하면 제거 후 result값 증가 if(bucket[bucket.length-1] === bucket[bucket.length-2]){ bucket.splice(bucke..
Comment