본문 바로가기
IT/알고리즘

백준 1193번 분수찾기(수학)

by 어센트 2020. 1. 3.

처음 문제를 봤을 때는 어려워보였지만 지그재그로 이동할때 같은 줄의 분수의 분자,분모의 합이 동일하다는 것을 알수있었고 그 합이 줄이 바뀔때 마다 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
import java.util.Scanner;
 
public class 분수찾기 {
 
    public static void main(String[] args) {
 
        int flag = 2//1/1일때 분자 분모합은 2이므로 2로시작
        int cnt =0 ,num1=0,num2=0// 반복횟수를 이용해 x번째까지 반복 num1,num2는 분모 분자가 될 수
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int chk = 1//분자를 세는건지 분모를 세는건지 판단 하나의 줄을 돌고나면 
        //포문을 돌 분자 분모의 기준이 변화 함으로 -1을 곱해줌
        while(num1==0 ) {
            for(int i=1;i<flag;i++) {
                cnt++;
                if(cnt==x) { //x번째에 도달하면?
                    num1 = i;
                    num2 = flag-i;
                    break;
                }            
            }
            chk*=(-1);
            flag++;
        }
        if(chk>0) {
            System.out.println(num1+"/"+num2);
        }
        else {
            System.out.println(num2+"/"+num1);
        }
        
        
        sc.close();
    }
 
}
 
cs

 

'IT > 알고리즘' 카테고리의 다른 글

백준 10250 ACM호텔  (0) 2020.01.10
백준2869 달팽이는 올라가고싶다(수학)  (2) 2020.01.04
백준 2292 벌집 (수학)  (0) 2020.01.03
프로그래머스 lv2 가장 큰 수  (0) 2019.11.19
프로그래머스 lv2 프린터  (0) 2019.11.19