728x90
1) 분자와 분모의 흐름은 반대이다.
2) 분자는 아래의 규칙으로 반복된다.
1
1-2
3-2-1
1-2-3-4
5-4-3-2-1
1-2-3-4-5-6
7-6-5-4-3-2-1
3) 분모는 아래의 규칙으로 반복된다.
1
2-1
1-2-3
4-3-2-1
1-2-3-4-5
6-5-4-3-2-1
1-2-3-4-5-6-7
4) 즉, n 번째 줄에 위치할 때,
(i) n이 짝수인 경우, 분자는 1씩 증가 분모는 n에서 1씩 감소하고,
(ii) n이 홀수인 경우, 분자는 n에서 1씩 감소하고, 분모는 1씩 증가한다.
5) 입력받은 숫자 X가 위치하는 줄의 위치를 구한다. (즉, n을 구한다) → while 문, 등차수열합 이용
6) n의 홀수, 짝수인 경우를 나누어 분자를 구한다.
7) 분자와 분모의 합은 항상 n+1 인 점을 이용하여, 분자, 분모를 출력한다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int X = sc.nextInt();
int n=1;
// X가 위치한 줄의 위치(n) 구하기
while (X>n*(n+1)/2){
n++;
}
// 분자 구하기
int a;
if (n%2 == 0){
a = X - (n-1)*n/2;
} else {
a = (n+1) - (X - (n-1) * n/2);
}
System.out.println(a+"/"+(n+1-a));
}
}
728x90
'알고리즘' 카테고리의 다른 글
| 알고리즘의 기본, 시간 복잡도 (1) | 2024.01.03 |
|---|---|
| 백준 2869 (Java) (1) | 2023.12.03 |
| 백준 2564 (Java) (1) | 2023.11.28 |
| 백준 25206 (Java) (1) | 2023.11.28 |
| 백준 1316 (Java) (0) | 2023.11.27 |