[백준 알고리즘] 1193번 / 분수 찾기

2018. 5. 27. 21:27알고리즘/백준

728x90
반응형
SMALL
문제

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

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번째 분수를 구하는 프로그램을 작성하시오.


♡ 소스코드 (Java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Scanner;
 
public class FindFraction {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int line, min, max;
        
        for (line = 1; ; line++) {
            min = line * (line+1/ 2 - line;
            max = line * (line+1/ 2;
            
            if ((min < x) && (max >= x)) {
                break;
            }
        }
        
        if (line % 2 == 0) {     // 짝수줄일 때
            int bunja = line, bunmo = 1;
            
            while(true) {
                if (max == x) {
                    System.out.println(bunja +"/" + bunmo);
                    break;
                } else {
                    max--;
                    bunja--;
                    bunmo++;
                }
            }
        } else {                // 홀수줄일 때
            int bunja = 1, bunmo = line;
            
            while(true) {
                if (max == x) {
                    System.out.println(bunja +"/" + bunmo);
                    break;
                } else {
                    max--;
                    bunja++;
                    bunmo--;
                }
            }
        }
    }
 
}
 
Colored by Color Scripter


728x90
반응형
LIST