728x90
★ 문제
- 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
- X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
★ 소스코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int X = in.nextInt();
int cross_count = 1, prev_count_sum = 0;
while (true) {
// 직전 대각선 누적합 + 해당 대각선 개수 이용한 범위 판별
if (X <= prev_count_sum + cross_count) {
if (cross_count % 2 == 1) { // 대각선의 개수가 홀수라면
// 분자가 큰 수부터 시작
// 분자는 대각선상 내의 블럭 개수 - (X 번째 - 직전 대각선까지의 블럭 개수 - 1)
// 분모는 X 번째 - 직전 대각선까지의 블럭 개수
System.out.print((cross_count - (X - prev_count_sum - 1)) + "/" + (X - prev_count_sum));
break;
}
else { // 대각선상의 블럭의 개수가 짝수라면
// 홀수일 때의 출력을 반대로
System.out.print((X - prev_count_sum) + "/" + (cross_count - (X - prev_count_sum - 1)));
break;
}
} else {
prev_count_sum += cross_count;
cross_count++;
}
}
}
}
728x90
'백준 알고리즘' 카테고리의 다른 글
8. 일반 수학1 - 8 (10757번) (0) | 2023.04.17 |
---|---|
8. 일반 수학1 - 7 (2869번) (0) | 2023.04.17 |
8. 일반 수학1 - 5 (2292번) (2) | 2023.04.17 |
8. 일반 수학1 - 4 (2903번) (0) | 2023.04.17 |
8. 일반 수학1 - 3 (2720번) (2) | 2023.04.17 |