[백준/파이썬] 14723번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 14723번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
민호는 이산수학 강의를 듣는다.
어느 날 교수님께서 Positive rational numbers are countable에 대해 증명해 주시고, 역시나 과제를 내주셨다.
양의 유리수는 다음 그림처럼 열거할 수 있다.
첫 번째 유리수는 1/1, 두 번째 유리수는 2/1, 세 번째 유리수는 1/2, 네 번째 유리수는 3/1, 다섯 번째 유리수는 2/2, … 이다.
1/1, 2/2, 3/3, … 은 다르게 취급 하는것에 유의하여야 한다.
위 그림처럼 모든 유리수에 순차적으로 번호를 붙였을 때, N번째 유리수를 구하여라.
과제가 하기 싫은 민호는 컴공과답게 N번째 유리수를 구하는 프로그램을 만들려고 한다.
입력 요약
첫 번째 줄에 양의 정수 N이 주어진다. (1 ≤ N ≤ 1000)
출력 요약
N번째 유리수가 a/b일 때, 분자 a, 분모 b를 공백으로 구분하여 a, b를 출력하여라.
코드
l=[[(i,j)for j in range(1,100)]for i in range(1,100)]
i=j=c=r=0
n=int(input())
while True:
i=r
for j in range(r+1):
c+=1
if c==n:break
i-=1
if c==n:break
r+=1
print(*l[i][j])
설명
핵심은 구현 관점에서 민호는 이산수학 강의를 듣는다.
어느 날 교수님께서 Positive rational numbers are countable에 대해 증명해 주시고, 역시나 과제를 내주셨다.
양의 유리수는 다음 그림처럼 열거할 수 있다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기