무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
출력
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
예제 입력/출력
예제 입력
예제 출력
1
1/1
2
1/2
3
2/1
4
3/1
5
2/2
6
1/3
7
1/4
8
2/3
9
3/2
14
2/4
알고리즘 분류
● 수학 ● 구현
소스코드
package Lv2_Silver;
import java.io.*;
public class BOJ_S5_1193_분수찾기 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder str = new StringBuilder();
// X번째 분수를 구하는 프로그램을 작성하시오.
int X = Integer.parseInt(br.readLine());
/**
* 1, 2, 3, 4, 5, ... 순으로 등차수열의 형태를 보인다.
*/
int range = 1;
int toggle = 1;
while(range < X){
X -= range;
// 방향 바꿔주고, 다음 칸으로
toggle *= -1;
range++;
}
int a = range-X+1;
int b = range+1-a;
if(toggle == 1)
str.append(a).append("/").append(b);
else
str.append(b).append("/").append(a);
System.out.println(str);
br.close();
}
}
댓글