본문 바로가기
Computer Science/Algorithm

[백준] 1193번 - 분수찾기 (Java)

by soro.k 2022. 9. 18.


 

참고 코드

 

백준 1193번 java 자바 분수찾기 [수학1]

하이고... 백준 문제 정주행 좀 꾸준히 하고 싶었는데 요새 너무 정신없이 살다보니 너무 오랜만에 작성하게 되었다. 사람이 이렇게까지 게을러지는구나 느끼고 있는 요즘이다. 아무튼 본론으로

hellodoor.tistory.com

 

우선 대각선 행마다 칸의 갯수가 있다는 것과, 각 행마다 대각선이 아래로 향하고 있는지 위로 향하고 있는지를 파악해야 한다.

 

세 번째 대각선 행을 보면 홀수 행이고 대각선 위 방향으로 진행이기 때문에 3/1 -> 2/2 -> 1/3 이 된다. 분자는 3에서 1로 감소 되고 분모는 1에서 3으로 증가하는 걸 알 수 있다. 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        int i = 1; // 대각선 행
        int sum = 0; // 해당 대각선 행까지 범위 안에 있는 칸의 수
        int top = 1, bot = 1;

        // 대각선 행과 칸의 수 구하기
        while(true) {
            sum += i;
            // 만약 칸의 수가 전달 받은 숫자보다 크거나 같으면 break
            if (N <= sum) {
                break;
            }
            i++;
        }

        if (i % 2 == 0) { // 짝수 행이면 대각선 아래로 내려감
            for(int j = 0; j <= sum - N; j++) {
                top = i - j;
                bot = j + 1;
            }
        } else {
            for(int j = 0; j <= sum - N; j++) {
                top = j + 1;
                bot = i - j;
            }
        }
        System.out.println(top + "/" + bot);

    }
}

 

 

'Computer Science > Algorithm' 카테고리의 다른 글

[백준] 2839 - 설탕 배달 (Java)  (0) 2022.09.18
[백준] 2869 - 달팽이는 올라가고 싶다 (Java)  (0) 2022.09.18
[JAVA] 알파벳 찾기  (0) 2022.03.22
[JAVA] 한수  (0) 2022.03.09
[JAVA] 셀프 넘버  (0) 2022.03.09