본문 바로가기
알고리즘/백준

[백준] 1193 - 분수 찾기 (JAVA/ 자바)

by pandastic 2024. 3. 26.
반응형

1193번 문제(1)
1193번 문제(2)
풀어보겠다고 나름대로 노력한? 흔적

 

이틀 간 이 문제와 씨름했으나... 결국 풀지 못하고 다른 분이 푸신 방법을 찾아보았다..

나는 분자와 분모를 증가 혹은 감소 시키는 방법으로 자꾸 풀려고 하다가 실패했는데, 대각선을 이용해서 푸는 방법이 있었다.

 

1.Scanner를 이용한 방법

import java.util.Scanner;

public class Main{
public static void main(String[] args){

    Scanner sc = new Scanner(System.in);

    int X = sc.nextInt();
    int cross=1;//대각선
    int prev=0;//이전 대각선 합

    while (true) {
        if (X <= prev + cross) {	            
            if (cross % 2 == 1) {//홀수
                System.out.print((cross - (X - prev - 1)) + "/" + (X - prev));
                break;
            } 
            else {//짝수
                System.out.print((X - prev) + "/" + (cross - (X - prev - 1)));
                break;
            }
        } else {
            prev += cross;
            cross++;
        }
    }
    sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

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

public class Main{
public static void main(String[] args)throws IOException{

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    int X = Integer.parseInt(br.readLine());
    int cross=1;//대각선
    int prev=0;//이전 대각선 합

    while (true) {
        if (X <= prev + cross) {	
            if (cross % 2 == 1) {//홀수
                System.out.print((cross - (X - prev - 1)) + "/" + (X - prev));
                break;
            } 
            else {//짝수
                System.out.print((X - prev) + "/" + (cross - (X - prev - 1)));
                break;
            }
        } else {
            prev += cross;
            cross++;
        }
    }
    }
}

 

내 스스로 힘으로 풀고 싶었는데 그렇게 하지 못했던 점이 너무 아쉽고 분하다.

그리고 이런 멋진 해결 방법을 알려주신 출처 글쓴이 분께도 감사하다.

 

출처 : https://st-lab.tistory.com/74

반응형