본문 바로가기
[ 다먹살 ]/- Coding

[백준] 14723 이산수학 과제

by 엉망으로살기 2021. 11. 3.
반응형

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

 

14723번: 이산수학 과제

N번째 유리수가 a/b일 때, 분자 a, 분모 b를 공백으로 구분하여 a, b를 출력하여라.

www.acmicpc.net

 

예전부터 이와 유사한 문제가 꽤 있었던 것 같다. 대각선 방향으로 나눠서 같은 줄에 있는 수들을 생각해보면 분자+분모의 합이 모두 같다는 것을 알 수 있고, 합계를 늘려주면서 리스트에 분자 분모쌍을 넣어주고 리턴해주면 되는 문제였다.


문제 및 입출력


코드

import java.util.ArrayList;
import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        // 분자분모쌍으로 들어갈 리스트
        ArrayList<int[]> list = new ArrayList<int[]>();
        
        int n = sc.nextInt();
        int sum = 2; // 루프별 분자+분모 합계
        int cnt = 0; // 리스트에 삽입된 분자분모쌍의 갯수
        
        while(cnt<n)
        {
            // 루프별로 분자+분모의 합계는 모두 동일
            for(int i=sum-1; i>0; i--)
            {
                list.add(new int[]{i, sum-i});
                cnt++;
            }
            
            sum++;
        }
        
        System.out.println(list.get(n-1)[0] + " " + list.get(n-1)[1]);
        sc.close();
    }
}

 

반응형

댓글