[JavaScript] 1193 | 백준

유인학·2022년 5월 25일
0

[JS] Algorithm(백준)

목록 보기
58/82
post-thumbnail

📄 문제

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.

이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은
지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

⌨ 예제 입력 1

1

📺 예제 출력 1

1/1

⌨ 예제 입력 2

2

📺 예제 출력 2

1/2

⌨ 예제 입력 3

4

📺 예제 출력 3

3/1

🚩solution

이 문제도 이전 벌집 문제와 비슷하게 풀었다.
이전과 동일하게 최댓값을 먼저 구해보자
1, 3, 6, 10, 15....
2, 3, 4, 5씩 늘어나는걸 알 수 있다.
그리고 원하는 분수식으로 표현하기 위해 이전 num값에서 이전 max값을 빼주면 된다.
예를들어 14라고 한다면 이전 max값 10을 빼면 4가 나온다.
그리고 나머지 하나는 count-(num-max)+1 이렇게 구하면 된다.

const input = require('fs').readFileSync('/dev/stdin').toString().trim();
const num = Number(input);
let currentMaxValue = 1;
let count = 1;
while (num > currentMaxValue) {
  count++;
  currentMaxValue += count;
}
currentMaxValue -= count;
if (count % 2 === 0) {
  console.log(
    `${num - currentMaxValue}/${count - (num - currentMaxValue) + 1}`
  );
} else {
  console.log(
    `${count - (num - currentMaxValue) + 1}/${num - currentMaxValue}`
  );
}
profile
'유'발자!

0개의 댓글