1193 분수 찾기[기본 수학 1/Bronze 1]

최유연·2021년 10월 22일
0

📋 문제 :

분수 찾기

💡 문제 풀이 :

규칙에 따라 나열 된 분수 중 입력 된 X번째 분수를 찾는 문제이다.
분수는 오름차순과 내림차순의 양상에 따라 숫자별로 세트로 묶을 수가 있다.

분자 : 1 12 321 1234
분모: 1 21 123 4321

따라서 입력으로 주어진 X번째가 속하지 않는, 이전 세트에 대해서는 계산할 필요가 없다.
num, step이라는 변수를 선언하여, X번째에 도달할 때까지 세트를 건너뛰어주고,
숫자가 짝수면 분자가 오름차순, 분모가 내림차순이고
숫자가 홀수면 분자가 내림자순, 분모가 오름차순이므로 이 규칙을 이용하여
X번째 분수를 구해준다.

💻 코드 :

python 코드


if __name__ == '__main__':
    X = int(input())
    num = 0
    step = 0
    numerator = 0
    denominator = 0
    while num < X:
        step += 1
        num += step

    num -= step

    if step % 2 == 0:
        numerator = X - num
        denominator = step - (X-num - 1)
    else:
        numerator = step - (X-num - 1)
        denominator = X - num

    print(f'{numerator}/{denominator}')

java 코드


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int X = sc.nextInt();
        int count = 1, range = 1;
        int numerator = 0, denominator = 0;
        while(X>range){
            count += 1;
            range += count;
        }
        range -= count;
        //range 활용
        if(count%2==0){//분자 업 분모 다운
            numerator = X - range;
            denominator = count - (X - range - 1);
        }
        else{//분자 다운 분모 업
            numerator = count - (X - range - 1);
            denominator = X - range;
        }
        System.out.printf("%d/%d",numerator,denominator);
    }
profile
프론트엔드 도메인 지식을 지닌 백엔드 개발자로 성장하기 위한 기록

0개의 댓글