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

백준/1193/분수찾기/JAVA

by minsol Kim 2021. 9. 28.

1193번: 분수찾기 (acmicpc.net)

 

1193번: 분수찾기

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

www.acmicpc.net

문제

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

1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4
3/1 3/2 3/3
4/1 4/2
5/1

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

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

입력

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

출력

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

 

 

 

대각선을 보면 분수의 개수가 1개 2개 3개 4개 5개 ... 등차수열을 이루고 있다. 

그리고 분수의 개수가 짝수이면 아래로 내려가고 홀수이면 위로 올라간다. 

if-else문을 사용하여 짝수인경우 (i%2 ==0)인 경우를 이용해 풀었다.

내려갈때는 분자가 커지고 올라갈때는 분모가 커지는 경우를 이용해서 풀었다. 

 

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int x = sc.nextInt(); 
        int i=1;
        int sum = 0;
        int top =1, bot = 1; //분자 ,분모 값 1로 초기화
        
        while(true){
            sum += i;
            if(sum >= x){
                break;
            }
            i++;   
        }
        if(i%2== 0){
            for(int j=0; j<=sum-x;j++){
                top = i-j;
                bot = j+1;
                
            }
        }
        else{
            for(int j=0; j<=sum-x;j++){
                bot = i-j;
                top = j+1;
                
            }
        }
        System.out.println(top + "/" + bot);
    }
}

'백준 알고리즘 > JAVA' 카테고리의 다른 글

백준/10250/ACM 호텔/JAVA  (0) 2021.10.01
백준/2869/달팽이는 올라가고 싶다/JAVA  (0) 2021.09.29
백준/2292/벌집/JAVA  (0) 2021.09.27
백준/1712/손익분기점/JAVA  (0) 2021.09.24
백준/1316/그룹 단어 체커/JAVA  (0) 2021.09.23

댓글