문제에서 나오는 규칙대로 수를 표에서 표시하면 위의 그림과 같이 된다. 그리고 표에서 왼쪽 아래로 대각선을 그어보면 규칙이 있는 것을 발견할 수 있다.
어떤 수가 i번째 줄 위에 있다고 할 때, 그 수의 분자와 분모를 합은 i + 1이다. 이를 응용하여 문제를 쉽게 풀 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* n : 입력값
* i : 몇 번쨰 줄인지 저장하고 있는 변수
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int i;
// 입력값 n이 몇 번째 줄 위에 있는지 알기 위해 루프
// 각 줄에 있는 숫자의 개수는 이전 줄에서 증가했던 것보다 1씩 늘어남
// 1 + 2 + 3 + 4 + ...
for (i = 1; n - i > 0; i++) {
n = n - i;
}
// 짝수번째 줄에 있을 땐 위에서부터, 홀수는 아래서부터 세기 시작함
if (i % 2 == 0) {
System.out.println(n + "/" + (i + 1 - n));
} else {
System.out.println((i + 1 - n) + "/" + n);
}
}
}