문제 링크
- 백준 1193번: (https://www.acmicpc.net/problem/1193)
풀이
1 | const input = require('fs').readFileSync('예제.txt').toString() |
해설
우선 문제 이해를 위해 이렇게 바꿔보자🧐
- 주어진 숫자가 몇 번째 라인에 위치하는지 먼저 알아야 한다
while
문의 조건을sum < num
으로 설정 하고,sum
에는1 + 2 + 3 + 4
이런식으로 값이 더해진다.9
를 예로 들어보자,1 + 2 + 3 + 4 = 10
이므로,9
보다 값이 커지게 되므로,i = 4
가 된다
즉while
문으로9
가4번째 라인
에 위치한다는 것을 알 수 있다
- 해당 라인에서 몇번째에 위치하는가?
짝수인 경우와 홀수인 경우로 나눌 수 있는데, 짝수인 경우 끝에 위치하는 분수의 형태는
i / 1
,
홀수인 경우 끝에 위치하는 분수의 형태는1 / i
인 것을 확인 할 수 있다.
각 라인의 마지막 숫자는sum
이 되기 때문에(순차적으로 수가 더해지는 규칙이 있기 때문1 + 2 + 3...
)sum - num
의 절댓값을 변수a
에 저장한 뒤, 이 값을
짝수 일 때는(i - a) / (1 + a)
홀수 일 때는(1 + a) / (i - a)
로 출력하면 된다
😀