문제 설명 문제 풀이 방법 이 문제에서 중요하게 봐야할 것은 split 메서드의 사용법이다. n을 2진수로 만든다음 spilt("1")로 문자열을 배열로 만들어준다. 이때, 1의 개수보다 많이 나올 수 있는데 이것은 1을 기준으로 나누었기 때문에 1 앞뒤에 있는 요소가 반환되었기 때문이다. while문을 통해 n++하며 반복해준다. 이때 위와 같은 방법으로 배열의 길이를 측정해 주어진 n의 경우와 같다면 반복하며 1씩 늘어난 n을 반환해준다. 내가 작성한 코드 const solution = (n) => { let answer = 0; let n1 = n.toString(2).split("1").length; while(true){ n++ if(n.toString(2).split("1").length ==..
코딩 테스트/프로그래머스 코딩 테스트 연습
문제 설명 문제 풀이 방법 가장 작은 예산부터 더해줘서 지원 가능한 부서의 수를 구해야 한다. sort를 이용해 예산 배열을 정렬해주고 0인덱스 부터 for문으로 더해주며, 예산을 넘어가면 이전의 부서 까지의 부서 수를 반환한다. for break를 이용해 효율성을 조금 더 높여준다. 내가 작성한 코드 function solution(d, budget) { d.sort((a, b) => a - b); let cnt = 0; let sum = 0; for(let i=0; i
문제 설명 문제 풀이 방법 이 문제는 주어지는 수의 약수 중 홀수인 약수의 개수만큼이 답이된다. 또한 중첩 반복문(2중 for문)을 이용해 반복하며 더한 값을 비교해 총 값이 n이 되는 경우의 수를 반환한다. 이렇게 2개의 방법으로 답을 도출할 수 있다. 내가 작성한 코드 1 const solution = (n) => { let answer = 0; for(let i=1; i { let answer = 1; let sum = 0; for(let i=1; i
문제 설명 문제 풀이 방법 이 문제는 이해하면 매우 간단한 문제이다. 하나의 배열에서 가장 작은 수와 다른 배열에서 가장 큰 수를 곱해주며 더해준 값이 답이된다. 배열 원본 자체를 정렬해주는 sort메서드를 이용해 정렬해 주고, reduce 메서드를 이용해 한 배열의 요소별로 계산을 해주자 내가 작성한 코드 const solution = (A,B) =>{ let answer = 0 A.sort((a, b) => a - b); B.sort((a, b) => b - a); return A.reduce((sum, e, idx) => { return sum + e*B[idx] }, 0); } 런타임 에러난 코드 정확성은 모두 통과했지만 효율성은 모두 통과하지 못했다. 이 문제의 의도가 for문을 이용한 반복은 ..
문제 설명 제한 사항 문제 풀이 방법 이 문제는 유클리드 호제법을 이용해 최대 공약수를 구한 뒤 최소 공배수를 구하는 방식으로 풀었다. 간략하게 정리하면 a, b 두 수(a > b)를 나누고 나온 나머지가 0이 될 때 까지 진행하며, 나머지가 0이 될 때의 a가 두 수의 최대 공약수가 된다. 최소 공배수는 두 수를 곱한 값을 최대 공약수로 나눈 값이다. 내가 작성한 코드 const solution = (n, m) => { // 최대 공약수는 유클리드 호제법을 이용해 작성 const getGcd = (a, b) => a % b === 0 ? b : getGcd(b, a%b) const gcd = getGcd(n, m); // 최소 공배수는 위에서 구한 최대 공약수를 이용해 구할 수 있다. const get..
문제 설명 제한 사항 문제 풀이 방법 n이 1인 경우를 대비해 처음 배터리 소모량을 1로 선언해 주고 n이 1보다 큰 경우는 계산을 진행해 준다. 내가 주목한 포인트는 순간이동을 현재까지 이동한 거리의 2배 위치까지 간다는 것이다. 이는 주어진 숫자에 나누기 2를 하며 최단 거리를 구할 수 있다. 만일 나머지가 1이 나오는 숫자이면 -1을 하면되는데, 이는 1칸 점프를 했다고 가정하고 점프한 횟수 즉 베터리 소모량을 저장한다. 계산을 이어나가면 숫자가 1이 되는 순간은 점프해서 이동한 것이기에 점프한 횟수(베터리 소모량)를 반환해 준다. 내가 작성한 코드 const solution = (n) => { let answer = 1 if(n>1){ while(true){ if(n === 1){ return a..