algorithm 222

영어 끝말잇기 ( Level 2 , JavaScript, Summer/Winter Coding )

영어 끝말잇기 ( Level 2 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(n, words) { for ( let i = 1; i < words.length; i++ ) { if ( words[i-1].slice(-1) !== words[i][0] || words.slice(0,i).includes(words[i]) ) return [i % n + 1, parseInt(i / n) + 1] } return [0, 0] } 이전 단어의 끝 알파벳과 현재 단어의 첫 알파벳이 일치하는지 확인 현재 단어가 이전에 나온 적이 있는지 확인 탈락하는 사람의 번호와 몇 번째로 탈락하는지 리턴 조건에 걸리지 않고 반복문이 끝난다면 ..

예산 ( Level 1, JavaScript, Summer/Winter Coding )

예산 ( Level 1 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(d, budget) { const arr = d.sort((a,b) => a-b) let i = 0; while ( budget >= 0 ) { if ( arr[i] === undefined ) return i else if ( budget === arr[i] ) return i+1 else if ( budget < arr[i] ) return i budget -= arr[i] i += 1 } } d를 오름차순으로 정렬한다. budget에서 arr[i]의 값을 빼주며 0이 될때까지 반복문을 돈다. budget - arr[i]이 0이 되었거나, 0보다 ..

소수 만들기 ( Level 1, JavaScript, Summer/Winter Coding )

소수 만들기 ( Level 1 ) Summer/Winter Coding ~2018 ( JavaScript ) 문제 링크 나의 풀이 function solution(nums) { const arr = [] const isPrime = n => { for ( let i = 2; i isPrime(el)).length; } 숫자 세 개의 합을 담는 arr을 선언한다 숫자가 소수인지 판별하는 isPrime 함수를 만든다 for문 세개를 중첩해 세 개의 합을 arr에 담는다 arr중 소수만 남긴 후에 배열의 길이를 리턴

게임 맵 최단거리 ( Level 2, JavaScript, 찾아라 프로그래밍 마에스터 )

게임 맵 최단거리 ( Level 2 ) Programmers 찾아라 프로그래밍 마에스터 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { const dx = [0,0,1,-1]; const dy = [1,-1,0,0]; const queue = [[0,0,1]]; while ( queue.length ) { const cur = queue.shift(); if ( cur[0] === maps.length - 1 && cur[1] === maps[0].length - 1) return cur[2] for(let i=0;i= 0 && yy >= 0 && xx < maps[0].length && yy < maps.length && maps[yy][xx] === 1 ) {..

짝지어 제거하기 ( Level 2, JavaScript, 2017 팁스타운 )

짝지어 제거하기 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { const stack = [] for ( let i = 0; i < s.length; i++ ) { s[i] === stack[stack.length-1] ? stack.pop() : stack.push(s[i]) } return stack.length ? 0 : 1 } 문자열 s에서 하나씩 체크하며 stack의 마지막 요소와 같다면 제거한다 다르다면 스택에 추가 스택의 길이 여부로 전부 제거됐는지 확인

예상 대진표 ( Level 2, JavaScript, 2017 팁스타운 )

예상 대진표 ( Level 2 ) Programmers 2017 팁스타운 ( JavaScript ) 문제 링크 나의 풀이 function solution(n,a,b) { let count = 0, temp = a; if ( b < a ) { a = b b = temp } while ( true ) { if ( a % 2 && Math.abs(b-a) === 1 ) return count+1 a = a % 2 ? (a + 1)/2 : a/2 b = b % 2 ? (b + 1)/2 : b/2 count += 1 } } a,b 대소 비교 후 작은것을 a 에 넣어준다. 반복문을 통해 a와 b를 홀수, 짝수를 판별해 값을 줄여주고 이 때 반복 횟수를 count 를 통해 저장한다 a,b가 1이 차이나면서 a가 대진..

Programmers Level 2 연습문제모음 ( JavaScript )

Level 2 연습문제 ( JavaScript ) 작성한 코드보다 더 좋은 코드가 있음을 미리 알려드리며, 코드의 해설이 필요하신 분은, 댓글 남겨주시면 적어놓겠습니다. 목차 N개의 최소공배수 JadenCase 문자열 만들기 행렬의 곱셈 피보나치 수 최솟값 만들기 최댓값과 최솟값 숫자의 표현 땅따먹기 다음 큰 숫자 올바른 괄호 124 나라의 숫자 풀이 1. N개의 최소공배수 function solution(arr) { const gcd = (a, b) => b ? gcd(b, a % b) : a return arr.reduce((a, b) => a * b / gcd(a, b)) } 2. JadenCase 문자열 만들기 function solution(s) { return s.split(' ').map(a..