[백준] 1193번 분수찾기

NCOOKIE·2023년 2월 6일
0

알고리즘

목록 보기
2/34
post-thumbnail

문제링크

풀이

문제에서 나오는 규칙대로 수를 표에서 표시하면 위의 그림과 같이 된다. 그리고 표에서 왼쪽 아래로 대각선을 그어보면 규칙이 있는 것을 발견할 수 있다.

어떤 수가 i번째 줄 위에 있다고 할 때, 그 수의 분자와 분모를 합은 i + 1이다. 이를 응용하여 문제를 쉽게 풀 수 있다.

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

/*
 * n : 입력값
 * i : 몇 번쨰 줄인지 저장하고 있는 변수
 */
public 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;

		// 입력값 n이 몇 번째 줄 위에 있는지 알기 위해 루프
        // 각 줄에 있는 숫자의 개수는 이전 줄에서 증가했던 것보다 1씩 늘어남
        // 1 + 2 + 3 + 4 + ...
        for (i = 1; n - i > 0; i++) {
            n = n - i;
        }

		// 짝수번째 줄에 있을 땐 위에서부터, 홀수는 아래서부터 세기 시작함
        if (i % 2 == 0) {
            System.out.println(n + "/" + (i + 1 - n));
        } else {
            System.out.println((i + 1 - n) + "/" + n);
        }
    }
}
profile
일단 해보자

0개의 댓글

관련 채용 정보