x = int(input()) # x = 14
line = 1
while x > line:
x -= line # x = 14, 13, 11, 8, 4
line += 1 # line = 1, 2, 3, 4, 5
if line % 2 == 0:
a = x
b = line - x + 1
else:
a = line - x + 1
b = x
print(a, "/", b, sep = "")
풀이
표를 보면 규칙성은 [1/1], [1/2, 2/1], [3/1, 2/2, 1/3], [1/4, 2/3, 3/3, 4/1] ... 처럼 단순해보이지만
이것을 코드풀이로 옮기기는 힘들었다..
마지막에 작성한 print() 코드부터 훑어보면
a와 b를 /로 나눠서 a는 왼쪽, b는 오른쪽으로 봐서
a = [1], [1, 2], [3, 2, 1], [1, 2, 3, 4] ...
b = [1], [2, 1], [1, 2, 3], [4, 3, 2, 1] ...
위와 같은 규칙이 있다는 것을 알 수 있었다.
다시 처음으로 돌아와서 변수 x를 설정해서 정수를 입력받고
변수 line은 각각의 대각선에 해당한다고 생각하면 된다.
다음으로 while문을 사용해서 변수 x로 주어진 14의 위치를 찾기위해서 while문을 반복해서
변수x가 대각선 line 수보다 작아질 때, 해당하는 대각선에 찾고있는 변수 x가 있는 것이므로 while문을 탈출한다.
x = 14, 13, 11, 8 , 4
line = 1, 2, 3, 4, 5
위와 같이 x = 4, line = 5, x번째 분수가 있는 line의 위치를 알게 되었다.