ღ yuni_world ღ

[파이썬] [백준 / BOJ] 1193번 : 분수찾기 본문

알고리즘(Python)/백준

[파이썬] [백준 / BOJ] 1193번 : 분수찾기

ღ유닝이ღ 2023. 7. 31. 19:41

📌문제링크

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

 

1193번: 분수찾기

첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.

www.acmicpc.net

📕코드

n = int(input())
line = 1
while n > line:
    n -= line
    line += 1
if line % 2 == 0:
    num1 = n
    num2 = line - n + 1
    print('{}/{}'.format(num1, num2))
else:
    num1 = line - n + 1
    num2 = n
    print('{}/{}'.format(num1, num2))

먼저 분수의 규칙을 찾아보면 아래와 같다.

line 1 = 1/1
line 2 = 1/2, 2/1
line 3 = 3/1, 2/2, 1/3
line 4 = 1/4, 2/3, 3/2, 4/1
  • line n에는 n개의 분수를 가지고 있다.
  • line이 짝수일때는 분자가 1씩 증가, 분모는 1씩 감소한다.
  • line이 홀수일떄는 분자가 1씩 감소, 분모는 1씩 증가한다.

n이 line보다 클때까지 while문을 반복한다. n-=line을 통해 n이 line에서 몇번째 인덱스에 있는지 확인하며, line+=1을 통해 몇번째 line인지 확인한다.

이 후 앞서 발견한 line의 짝수, 홀수일때의 규칙을 통해

 line이 짝수이면 분자는 n, 분모는 line-n+1, line이 홀수이면 분자는 line-n+1, 분모는 n 으로 설정하여 코드를 작성한다.