문제 :
https://www.acmicpc.net/problem/1193
1193번: 분수찾기
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
www.acmicpc.net
Code:
import sys
# 입력으로 받은 정수 n을 저장합니다.
n = int(sys.stdin.readline())
# 삼각수의 합을 계산하기 위한 변수 i를 초기화합니다.
i = 0
# 삼각수의 합이 n을 초과하지 않는 가장 큰 i를 찾습니다.
while n > i * (i + 1) // 2:
i += 1
# i를 1 감소시킵니다.
i -= 1
# 분모의 합을 구합니다.
denominator_sum = i + 2
# i가 홀수일 때와 짝수일 때를 구분하여 출력합니다.
if i % 2 != 0:
# 홀수인 경우, 분자와 분모를 출력합니다.
print(str(n - i * (i + 1) // 2) + '/' + str(denominator_sum - (n - i * (i + 1) // 2)))
else:
# 짝수인 경우, 분자와 분모를 출력합니다.
print(str(denominator_sum - (n - i * (i + 1) // 2)) + '/' + str(n - i * (i + 1) // 2))
# 문제 풀이 설명:
# 이 문제는 분수를 차례대로 나열했을 때, 주어진 순서의 분수를 구하는 문제입니다.
# 분수는 삼각형 모양으로 나열됩니다.
# 각 층마다 분자와 분모의 합은 같고, 층이 증가할수록 분자는 감소하고 분모는 증가합니다.
# 예를 들어,
# - 1층: 1/1
# - 2층: 1/2, 2/1
# - 3층: 1/3, 2/2, 3/1
# - ...
# 이러한 패턴을 통해 주어진 순서의 분수를 찾을 수 있습니다.
'코딩테스트 > 백준-Python' 카테고리의 다른 글
[백준 Python] 1269번 대칭 차집합(실버4) (0) | 2024.04.03 |
---|---|
[백준 Python] 1316번 그룹 단어 체커 (실버5) (0) | 2024.03.20 |
[백준 Python] 2941번 크로아티아 알파벳 (실버5) (0) | 2024.03.20 |
[백준 Python] 25206번 너의 평점은 (실버5) (0) | 2024.03.20 |