BOJ[1193] - 분수찾기 by JavaScript
분수찾기
문제
언어
- JavaScript
문제 풀이 step 1
- 나열된 분수들은 배열에서 지그재그로 움직입니다.
- 배열은 왼쪽 상단에서 오른쪽 하단으로 점점 범위를 넓혀가는데 그 범위는 1씩 증가합니다.
- 즉, 1 + 2 + 3 + 4 + … 이런 식입니다.
- 이때, 규칙을 찾을 수 있습니다.
- 짝수일때는 위에서 아래로 내려가며, 분자가 커지고 분모는 작아집니다.
- 홀수일때는 아래에서 위로 올라가며, 분자는 작아지고 분모는 커집니다.
- 위 규칙을 이용해서 X가 1층인지 2층인지 … 몇 층인지 파악을 하고, 홀수인지 짝수인지 파악해서 계산해주면 됩니다.
소스 코드
const input = require("fs").readFileSync("/dev/stdin").toString().split("\n");
const solution = (input) => {
const N = parseInt(input[0]);
if (N === 1) return "1/1";
let before = 2;
for (let i = 2; i <= 1000000; i++) {
if (before <= N && N <= before + i - 1) {
const step = N - before;
if (i % 2 === 0) {
return `${1 + step}\/${i - step}`;
} else {
return `${i - step}\/${1 + step}`;
}
}
before += i;
}
};
console.log(solution(input));