이 문제를 풀 때는 규칙을 찾기 힘들어
https://spillmoon.tistory.com/3 이 분의 글에서 힌트를 얻어 풀었다.
1. 몇 번째 라인인지 찾는다.
1-1. 그 라인의 최소값 최대값을 찾는다.
최대값 : n*(n+1)/2
최소값 : n*(n+1)/2 - n + 1
2. 그 라인의 최대값을 -- 하면서 분모와 분자를 추리한다.
라인이 짝수 : 분모 = 1, 분자 = n
라인이 홀수 : 분모 = n, 분자 = 1
public static void main(String[]args) {
Scanner sc = new Scanner(System.in);
int find = sc.nextInt();
int n = 1;
int max, min;
// 원하는 숫자가 몇 번째 줄에 있는지 찾는다.
while(true) {
max = n*(n+1)/2;
min = n*(n+1)/2-n+1;
if ((min <= find) && (find <= max)) {
break;
}
n++;
}
int up, down;
// 라인이 홀수일 경우 분모 = 1, 분자 n
if (n%2 == 1) {
up = 1;
down = n;
while(true) {
if (max == find) {
System.out.println(up + "/" + down);
break;
}
max--;
down--;
up++;
}
// 라인이 짝수일 경우 분모 = n, 분자 1
} else {
up = n;
down = 1;
while(true) {
if (max == find) {
System.out.println(up + "/" + down);
break;
}
up--;
down++;
max--;
}
}
}