remagine
알고리즘 풀기 (8) 분수찾기 (보통) 본문
무한히 큰 배열에 다음과 같이 분수들을 적혀있다.
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. 내 풀이
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.concurrent.SynchronousQueue; public class Main { public static void main(String... args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test = Integer.parseInt(br.readLine()); br.close(); ArrayList<Integer> x = new ArrayList<Integer>(); ArrayList<Integer> y = new ArrayList<Integer>(); int n = 0; int z = 0; for (int i = 0 ; n < test ; i++){ n += i; z = i; } if(z % 2 == 0){ for ( int i = 1 ; i <= z ; i++){ x.add(i); } }else{ for ( int i = z ; i > 0 ; i--){ x.add(i); } } int resultX = x.get(test-n+z-1); int resultY = x.get(z-test+n-z); System.out.println(resultX + "/" + resultY); } } | cs |
2. 다른 사람 풀이
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 | import java.io.*; class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int sum =0; int start=0; int end=0; int x = 1; while(sum<n){ start = sum; sum += x; end = sum; x++; } int gap = end -start; int order = n-start; if(gap%2!=1){ System.out.println(order+"/"+(gap-order+1)); }else{ System.out.println((gap-order+1)+"/"+order); } } } | cs |
'알고리즘' 카테고리의 다른 글
알고리즘 풀기 (10) 문자열 반복 (약간 쉬움) (0) | 2017.08.11 |
---|---|
알고리즘 풀기 (9) 벌집 (보통) (0) | 2017.07.20 |
알고리즘 풀기 (7) 알파벳 찾기 (쉬움) (0) | 2017.06.29 |
알고리즘 풀기 (6) OX퀴즈 (쉬움) (0) | 2017.06.27 |
알고리즘 풀기 (5) 숫자의 갯수 (매우 쉬움) (0) | 2017.06.27 |
Comments