[백준 알고리즘] 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
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 2920번 / 음계 (0) | 2018.05.27 |
---|---|
[백준 알고리즘] 1789번 / 수들의 합 (0) | 2018.05.27 |
[백준 알고리즘] 1008번 / A/B (0) | 2018.05.27 |
[백준 알고리즘] 1001번 / A-B (0) | 2018.05.27 |
[백준 알고리즘] 1000번 / A+B (0) | 2018.05.27 |