STUDY/Algorithm

[백준] 1193 분수찾기

sinawi95 2021. 2. 7. 15:47
728x90

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]<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로 체크)에 따라 위로 올라가는지 아래로 내려가는지 판단했고, 그에따라 분자와 분모를 달리줬다.

 

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 2839 설탕배달  (0) 2021.02.07
[백준] 2775 부녀회장이 될테야  (0) 2021.02.07
[백준] 2504 괄호의값  (0) 2021.02.07
[백준] 3985 롤케이크  (0) 2021.02.06
[백준] 2386 도비의 영어공부  (0) 2021.02.06