www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net x=int(input()) dp = [0,1] result = 1 cnt = 1 while dp[-1] cnt가 홀짝에 따라 달라짐 if cnt%2: #odd ja=cnt+1-x+dp[-2] mo=x-dp[-2] else: #even ja=x-dp[-2] mo=cnt+1-x+dp[-2] print(f'{ja}/{mo}') 차례대로 배치했을 때 x번째 수가 몇번째 줄인지 찾기 위해 dp라는 리스트에 담았다. 해당되는 줄(cnt로 체크)에 따라 위로 올라가는지 아래로 내려가는지 판단했고, 그에따라 분자와 분모를 달리줬다.