‡ CODING TEST STUDY ‡/º 백준

[백준 | Java Silver V] (#1193) 분수찾기

Trudy | 송연 2024. 7. 26. 03:20

문제

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


접근

//(k * (k+1)) / 2 = n
// k*(k+1) = 2n
// k^2 + k = 2n

//1+2 = 3
//1+2+3 = 6
//1+2+3+4 = 10

 

등차수열 공식을 통해서 먼저 몇 번째 행, 몇 번째 칸인지 알아낸 후, 짝수/홀수 번째 행의 특징을 이용해서 구하면 됐던 문제이다. 

 

최종 코드

package week12.baek.july26;

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

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

        if(n==1) {
            System.out.println("1/1");
            return;
        }
        //(k * (k+1)) / 2 = n
        // k*(k+1) = 2n
        // k^2 + k = 2n

        //1+2 = 3
        //1+2+3 = 6
        //1+2+3+4 = 10
        int count = 0;
        int p = 0;
        while(count < n) {
            p++;
            count = p * (p+1) / 2;
        }

        int q = n - (p-1)*p / 2;

        //짝수행 : 1/p 로 시작
        if(p % 2 == 0) {
            System.out.println(q + "/" + (p - q +1));
        }
        else {
            System.out.println((p - q +1) + "/" + q);
        }

    }
}

/*
1그룹:  1/1

2그룹:  1/2 2/1

3그룹:  3/1 2/2 1/3

4그룹:  1/4 2/3 3/2 4/1
 */

 


Reference

https://javaone.tistory.com/43

 

백준 (1193번: 분수찾기)_Java

제목: 분수찾기 브론즈 1 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이

javaone.tistory.com