알고리즘

백준 1193번 분수찾기 (JAVA)

박카스마시며코딩 2023. 9. 19. 20:36

https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

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

www.acmicpc.net

 

저는 구현을 통해 문제를 해결하였습니다. 

먼저 몇번째 대각선인지를 구하고 그 대각선의 합을 분모 분자로 나누는 방식으로 구현하였습니다.

그리고 해당 대각선이 홀수번째인지 짝수번째인지에 따라 열에서 시작하는지 행에서 시작하는지에 다르기 때문에 이부분까지 고려하여 문제를 해결하였습니다.

 

package BOJ.etc;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BOJ_1193 {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String result = cal(n);
        System.out.println(result);
    }

    private static String cal(int n) {
        int sum = 0;
        int num = 1;
        while(n > sum + num){
            sum += num;
            num++;
        }
        int a = (n - sum); 
        int b =  num + 1 - a; 
        String result = a+"/"+b;
        if(num % 2 != 0){
            result = b+"/"+a;
        }
        return result;
    }
}