코딩 테스트/프로그래머스 코딩 테스트 연습

문제 설명 문제 풀이 방법 이 문제에서 중요하게 봐야할 것은 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..
58청춘
'코딩 테스트/프로그래머스 코딩 테스트 연습' 카테고리의 글 목록 (22 Page)