STUDY/Algorithm
[백준] 1193 분수찾기
sinawi95
2021. 2. 7. 15:47
728x90
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
x=int(input())
dp = [0,1]
result = 1
cnt = 1
while dp[-1]<x:
cnt += 1
result += cnt
dp.append(result)
#분자/분모 -> 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로 체크)에 따라 위로 올라가는지 아래로 내려가는지 판단했고, 그에따라 분자와 분모를 달리줬다.