문제 링크
- 백준 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)로 출력하면 된다
😀