[백준]단계별로 풀어보기 - 8단계.기본 수학1 - 1193번 분수찾기 (Java 자바)

728x90
반응형

단계별로 풀어보기 - [8단계.기본 수학1] - 1193번 분수찾기

문제


문제링크

https://www.acmicpc.net/problem/1193

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

 

풀이


분수 배열에서 i번째 대각선을 생각했을 때, i가 홀수인지, 짝수인지에 따라 경우를 나눠서 생각해보았다.

i가

홀수일 때: 위로 올라가는 방향↗. 올라갈수록 a감소, b증가

짝수일 때: 아래로 내려가는 방향↙. 내려갈수록 a증가, b감소

i를 증가시키는 for문 안에서 i가 짝수/홀수인지에 따라 for문 안에서 i번만큼 a와 b를 증가/감소시키도록 하였다.

 

CODE

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();

        int n = 1, a = 1, b = 1; // n번째 분수 a/b
        for (int i = 1; i <= n; i++) {
            if (i % 2 == 0) {
                for (int j = 0; j < i; j++) {
                    if (n == x) break;
                    a++;
                    if (b != 1) b--;
                    n++;
//                    System.out.println(n+"번째- "+ "i:"+i + ", j:"+j+" "+ a+"/"+b);
                }
            }
            else {
                for (int j = 0; j < i; j++) {
                    if (n == x) break;
                    b++;
                    if (a != 1) a--;
                    n++;
//                    System.out.println(n+"번째- "+ "i:"+i + ", j:"+j+" "+ a+"/"+b);
                }
            }
        }
        System.out.println(a + "/" + b);

    }
}

 

결과


문제를 풀면서 n번째 분수를 차례대로 출력하여 제대로 수행되고 있는지 확인하였다.

제출할 때는 주석처리!

728x90
반응형