백준 1193번 문항  www.acmicpc.net/problem/1193

 

풀이

denominator 분자, numerator 분모를 정수인 변수로 잡는다. 그리고 for문의 반복 한계점은 백준 문제의 입력값 범위를 사용했다.

백준에서 주어진 표를 보면 한 줄이 증가할 때마다 1씩 증가한다.

 

1. 몇 번째 줄인지 알아내기

for문에서 i가 1씩 증가할 수 있도록 하고,  증가할 때마다 그 값을 check라는 변수에서 돌면서 차감한다. check의 초기값은 입력값인 n값으로 한다. check 값이 i보다 작거나 같다면, i 줄에 있는 분수인 것을 알 수 있다.

 

2. 분수구하기

지그재그로 지나간다는 것을 고려하면 분자와 분모 값이 뒤바뀌어야 된다는 것을 알 수 있다.

만약 i 줄이 2의 배수(짝수)라면 분자 값이 순차적으로 증가하기 때문에 i 를 연속해서 차감하고 남은 check 값이다. 분모 값은 반대로 가므로 i줄에서 check 값을 제거하고 1을 더한 수가 된다.

만약 i 줄이 홀수라면 분자, 분모 값을 바꿔서 출력한다.

 

 

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
import java.util.Scanner;
 
public class Math_1193 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        int check = n;
        int denominator = 0;     //분모
        int numerator = 0;        //분자
        
        for (int i=1; i<=10000000; i++) {
            if(check<=i) {
                denominator = check;
                numerator = i-check+1;
 
                if(i%2==0)
                    System.out.println(denominator+"/"+numerator);
                else
                    System.out.println(numerator+"/"+denominator);
                
                break;
            } else check=check-i;
        }
 
        sc.close();
    }
 
}
cs
댓글