[백준] 1193 분수찾기.Java

조청유과·2023년 5월 29일
0

BOJ

목록 보기
71/128

문제

무한히 큰 배열에 다음과 같이 분수들이 적혀있다.


이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.

X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

출력

첫째 줄에 분수를 출력한다.

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int X = sc.nextInt();

        int n = 0;
        int top = 1;
        int bot = 1;
        int cnt = 0;
        if (X==1) {
            System.out.println("1/1");
        } else {
            while(cnt < X) {
                n++;
                cnt = n * (n+1) / 2; // 몇번째 라인인지.
            }
            int num = X - (n-1) * n / 2; // 그 라인에서 몇번째에 있는지.
            if (n % 2 == 0) {
                top = num;
                bot = n-num+1;
            } else {
                top = n-num+1;
                bot = num;
            }
            System.out.println(top+"/"+bot);
        }
    }
}

0개의 댓글