처음 풀이
num = 1
cycle = -1
X = int(input())
count = 0
while True:
j = num
if cycle == 1:
for i in range(0, j, +1):
count += 1
if count == X:
print(f"{i + 1}/{j}")
break
j -= 1
if count == X:
break
else:
for i in range(0, j, +1):
count += 1
if count == X:
print(f"{j}/{i + 1}")
break
j -= 1
if count == X:
break
num += 1
cycle *= -1
1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 . . .
분자와 분모가 1씩 증가하고 감소하는게 교차로 된다는 조건을 토대로 코드를 짰다.
결과는 시간초과가 떠버려서 좀더 간소하게 코드를 수정해봤다
X = int(input())
count = 0
for j in range(1, X + 1):
count += j
if count >= X:
if (j % 2) == 0:
print(f"{j - (count - X)}/{count - X + 1}")
else:
print(f"{count - X + 1}/{j - (count - X)}")
break
while문을 없애고 필요한 만큼만 반복문을 돌리도록 코드를 짰다.
j는 줄 수 개념
1/1
2/1 1/2
3/1 2/2 1/3
count는 현재까지 나온 분수들의 개수의 합