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(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://programmers.co.kr/learn/courses/30/lessons/68644 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아return 하도록 solution 함수를 완성해주세요. function solution(numbers) { var answer = []; for(let i = 0; i < numbers.length; i++ ) { for(let q = 0; q < numbers.length; q++) { i !== q && answer.indexOf(numbers[i] + numbers[q]) === -1 && answer.push(numbers[i] + numb..
프로그래머스 코딩테스트 연습문제 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하..
Comment