문제의 설명에서 "1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수"라고 했기 때문에 배열을 살펴보면 지그재그 형태이다.
즉 대각선으로 각 줄을 나눠서 보면 [1/1], [1/2, 2/1], [3/1, 2/2, 1/3], [1/4, 2/3, 3/2, 4/1] 이렇게 나타낼 수 있다.
각 줄을 line 이라고 하고 보면
line 1 = 1/1
line 2 = 1/2, 2/1
line 3 = 3/1, 2/2, 1/3
line 4 = 1/4, 2/3, 3/2, 4/1
line이 증가할 때마다 1개씩 증가 하고있다.
while문에서 X>line일때 반복하도록 한 이유는 9,10번째 줄을 보면 X는 line을 계속빼고있다. 그리고 line은 1씩증가하고있다.
그러면 만약 X=3 일 때 while문에서 3>1이 참 이되어 while문에 들어가고, X = 3-1 = 2, line+1 = 2가된다.
그 다음 while문에서 X = 2 > line = 2 가 거짓이 돼서 while문을 빠져나오게 되는 것이다.
3-1=2가되고 ,line=2가된다. 즉 2번째 라인에 2번요소라는 것이다.
X -= line을 하면 각 line에서 n이 몇번째에 위치하는지 알 수 있다.
그래도 지그재그 특성을 무시할 수 없기에 짝수 와 홀수 를 나눠줘야한다.