-
<백준(node.js)> 1193번: 분수찾기유물/└ 백준 2022. 2. 15. 17:14728x90
🤖
문제
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
풀이
const filePath = process.platform === "linux" ? "/dev/stdin" : "../input.txt"; const ORDER_NUMBER = +require("fs").readFileSync(filePath).toString().trim(); function findFraction(number) { let numerator; let denominator; let total = 1; let sum; for (let i = 1; ; i++) { if (total >= number) { sum = i + 1; for (let j = 1; j < sum; j++) { if (number - (total - i) === j) { numerator = i % 2 ? sum - j : j; denominator = i % 2 ? j : sum - j; return `${numerator}/${denominator}`; } } } else { total = total + i + 1; } } } console.log(findFraction(ORDER_NUMBER));
1. (line 4~26) 분수를 찾는 함수를 정의합니다.
2. (line 11~25) 분자와 분모의 합이 같은 갯수는 1, 2, 3, 4와 같이 증가합니다. 합이 2인 경우 1개(1/1), 합이 3인경우 2개(1/2, 2/1)와 같은 식입니다. 따라서 전체 합계(total)는 1, 3, 6, 10과 같이 증가하는 특징이 있습니다. 주어진 숫자가 가지는 분자와 분모의 합을 전체 합계와의 비교를 통해 찾을 수 있습니다.
3. (line 15~21) 찾아야할 분수가 분자와 분모의 합(sum)이 같은 집합에서 몇번째 분수인지를 확인하여 분자/분모 결과를 반환합니다.
728x90'유물 > └ 백준' 카테고리의 다른 글
<백준(node.js)> 10250번: ACM 호텔 (0) 2022.02.17 <백준(node.js)> 2869번: 달팽이는 올라가고 싶다 (0) 2022.02.16 <백준(node.js)> 2292번: 벌집 (0) 2022.02.11 <백준(node.js)> 1712번: 손익분기점 (0) 2022.02.09 <백준(node.js)> 1316번: 그룹 단어 체커 (0) 2022.02.07