문제 자연수 N을 입력하면 N번째 특별한 분수를 찾는 함수를 만들고 싶어합니다. 특별한 분수는 다음과 같은 규칙을 따릅니다. 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 -> 1/4 -> ... 위와 같이 분자와 분모가 번갈아가면서 증가하는 분수열을 만들고 있습니다. 예를 들어, 2번째 특별한 분수는 1/2, 4번째 특별한 분수는 3/1입니다. 예시 const test_case = 13 // 3/3 출력 풀이 function specialFraction(n) { let sum = 1; let count = 1; while (n > sum) { count++; sum += count; } let sn = sum - n; let d = count - sn; let m = sn + 1..
문제 다음과 같은 규칙에 따라 방 번호를 부여합니다. - 첫 번째 방은 1번입니다. - 각 방은 육각형으로 이뤄져 있으며, 중앙의 방을 기준으로 인접한 방만 이동할 수 있습니다. - 인접한 방은 순차적으로 증가합니다. 정수 n은 해당 방 번호입니다. n번방까지 이동을 몇번했는지 출력하는 프로그램을 작성하시오. 입력 정수 n이 주어집니다. 풀이 function getRoomMove(n) { let room = 1 let maxValue = 1 while(n > maxValue) { maxValue += 6 * room romm++ } return room } 육각형이기 때문에 6을 곱해주고 인접한 육각형이 생기기때문에 합산해줍니다. 입력 n이 조건에서 나오면 room이 반환됩니다.
문제 동전의 종류가 500원, 100원, 50원, 10원으로 주어질 때, 특정 금액을 입력받아 거스름돈을 계산하는 프로그램을 작성하시오. 동전의 합이 최소 단위로 출력되게 해야됩니다. 500원, 100원, 50원, 10원 동전의 개수를 공백으로 구분하여 출력합니다. 입력 첫째 줄에는 거스름돈으로 받을 금액을 나타내는 자연수 N이 주어집니다. N은 10 단위로 정해져있습니다. 예시 const test_case = 620 //출력 1 1 0 2 풀이 function calculateChange(money) { const coins = [500, 100, 50, 10]; const result = new Array(); coins.reduce((acc, cur) => { result.push(parseInt(..
문제 주어진 숫자를 진법으로 변환하는 프로그램을 작성하시오. 입력 문자열로 주어지고 숫자와 진법은 공백으로 구분되어 있습니다. 예시 const test_case = '101 2' 풀이 function coversionBase (data) { let [n, b] = data.split(' '); let result = ''; while (n > 0) { let s = n % b; s = s >= 10 ? String.fromCharCode(s + 55) : s; s += result; result = s; n = parseInt(n / b); } return result; } 숫자를 진법으로 나눈 나머지에서 나머지가 만약 10이상이면 알파벳 문자로 변환합니다. 구한 나머지를 앞에 덧붙이고 나눈 결과값으로 ..
문제 주어진 숫자를 다른 진법으로 변환하는 함수가 있습니다. 이 함수는 주어진 문자열에서 첫 번째 숫자는 변환할 숫자를, 두 번째 숫자는 변환할 진법을 나타냅니다. 변환된 숫자를 출력하세요. 입력 첫 번째 줄에는 변환할 숫자를 나타내는 문자열과 변환할 진법을 나타내는 숫자가 주어집니다. 예시 const test_case = '1A 16' // 출력 26 풀이 function calculateBaseConversion(str) { const [N, B] = str.split(' '); let result = 0; N.split('').forEach((e, idx) => { let num = e; if (isNaN(num)) num = e.charCodeAt() - 55; result += num * Mat..
문제 도화지위에 정사각형 영역으로 색을 칠합니다. 왼쪽 아래 모서리 기준으로 좌표가 주어집니다. 정사각형의 가로 세로의 길이는 10입니다. 도화지의 가로 세로의 길이는 100입니다. 총 몇 칸이 색이 칠해져있는지 반환합니다. 입력 2차원 배열 형태의 정사각형 정보들이 입력됩니다. [x, y]로 들어갑니다. 예시 const test_case1 = [ [1, 3], [5, 4], [7, 9], ]; // 출력 206 풀이 function countArea(whArray) { const paper = Array.from(new Array(100), () => new Array(100).fill(0)); let count = 0; whArray.forEach((e) => { count += test2(e[0],..