본문 바로가기

기초다지기/JS 코딩테스트105

javaScript 정수 배열 최소공배수 구하기 문제 정수 배열이 주어질 때 정수의 최소 공배수 구하기 풀이 function findGCD(a, b) { return b === 0 ? a : findGCD(b, a % b); } function findLCM(a, b) { return (a * b) / findGCD(a, b); } function solution(arr) { var lcm = arr[0]; return arr.reduce((lcm, num) => findLCM(lcm, num), arr[0]); return lcm; } GCD (최대공약수) LCM (최소공배수) reduce lcm 누적된 값 초기값은 배열 첫번째 요소 arr[0] num은 배열의 각 요소를 나타낸다 현재까지의 누적된 값 lcm과 배열의 각 요소 num의 최소공배수 계.. 2023. 12. 12.
javaScript 배열 문자열 연산자 t/f 구하기 (ox퀴즈) 문제 수식이 들어있는 배열이 매개변수로 주어질 때 수식이 옳다면 O 틀리면 X 리턴 풀이 function solution(quiz) { const answer = quiz.map((q)=>{ const [left,right] = q.split('=') console.log(left,right) if(left.indexOf('+') > -1){ const [leftValue1,leftValue2] = left.split(' + ').map(v=>Number(v)) return leftValue1 + leftValue2 === Number(right) ? 'O' : 'X' } else{ const [leftValue1,leftValue2] = left.split(' - ').map(v=>Number(v)) .. 2023. 12. 11.
javaScript 최빈값 구하기 문제 주어진 정수배열에서 가장 자주 나오는 값을 리턴. 최빈값이 여러개면 -1 리턴 풀이 function solution(array) { // 각 숫자의 등장 횟수를 저장하는 객체 생성 const frequencyMap = {}; // 배열을 순회하면서 각 숫자의 등장 횟수를 계산 for (let num of array) { if (frequencyMap[num] === undefined) { frequencyMap[num] = 1; } else { frequencyMap[num]++; } } // 최빈값 및 등장 횟수 초기화 let mode = -1; let maxFrequency = 0; // 객체를 순회하면서 최빈값 찾기 for (let key in frequencyMap) { if (frequen.. 2023. 12. 7.
javaScript 그리디 알고리즘으로 최적해 구하기 문제 무인도에 갇힌 사람들을 최소한의 구명보트를 사용하여 모두 구출하여라 각 사람은 개별적인 몸무게를 가지고 있고, 구명보트는 최대 2명을 태울수 있으며 무게 제한이 있다 최소한의 구명보트를 사용하여 모든 사람 구출 풀이 function solution(people, limit) { function solution(people, limit) { people.sort((a, b) => a - b); // 몸무게가 가벼운 순으로 정렬 let answer = 0; let left = 0; let right = people.length - 1; while (left 2023. 11. 29.
javaScript 이동시 사용해야하는 최소 건전지 양 구하기 문제 한 번에 k칸 앞으로 갈 수도 , 현재까지 온거리 *2 위치로 순간이동을 할 수도 있다 k칸 점프시에는 k만큼 건전시 사용량이 드는 반면 순간이동은 건전지를 소모하지 않을 때 n만큼 떨어진 장소로 이동할 때 최소 건전지 소모량을 리턴 나의 풀이 function solution(n) { let answer = 0; while (n > 0) { if (n % 2 === 0) { // 현재 거리가 짝수일 경우 n /= 2; } else { // 현재 거리가 홀수일 경우 n -= 1; answer++; } } return answer; } while 앞으로 k칸을 점프하면 k만큼 건전시 사용량이 든다는 조건으로 거리가 0이 될 때까지 계속 루프 (점프 또는 순간이동 선택) 짝수 홀수 판별 짝수시엔 순간이동.. 2023. 11. 28.
javaScript 푸드파이트 대회 문제 주어진 조건에 따하 정수 배열 food가 주어지며 이 배열은 칼로리가 적은 순서대로 음식의 양이 나타냄, 각 원소는 해당 음식의 수를 나타내어 둘이서 먹을 음식의 배치를 리턴 나의 풀이 function solution(food) { var answer = ''; for(let i = 0; i < food.length; i++) { var count = Math.floor(food[i] / 2); answer += i.toString().repeat(count); } var re = answer.split('').reverse().join(''); return answer + "0" + re; } food 배열을 for문으로 돌린다 각 요소에 대해 2로 나눈 후 내림을 적용 (floor) answer.. 2023. 11. 27.