[백준] 분수찾기_1193번
코드
def whereisX(x):
n, tmp = 0, 0
while True:
an = (n**2 + n + 2) // 2
if tmp <= x < an:
return [n, x-tmp]
break
n += 1
tmp = an
x = int(input())
list = whereisX(x)
level = list.pop(0)
distance = list.pop(0)
if level % 2 == 1:
print(str(level-distance) + "/" + str(distance+1))
else:
print(str(distance+1) + "/" + str(level-distance))
풀이노트
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15 16
~> 다음과 같은 계단형태임을 알게 됨
1 2 4 7 11 ..
계차수열
an = (n**2 + n + 2) / 2
- input으로 숫자가 들어오므로, x의 계단 위치(level)를 아는 것이 중요하다고 생각함
- 앞 숫자인 1 2 4 7 11 이 계차수열임을 알고, 그것의 일반항 an을 검색하여 알아냄
- def whereisX() 로 처리
- 함수 처리 중 분모 분자 파악을 위해 level에서 몇번째인지(distance)가 필요함
- 함수 return 부분을 list로 처리하여 두 개 return 할 수 있게 함
- level이 홀수, 짝수에 따라 다르게 처리해야 함
- 홀수는 분자가 5 4 3 2 1 식으로 작아지고, 짝수는 1 2 3 4 식으로 커짐
소요시간 : 75분
Author And Source
이 문제에 관하여([백준] 분수찾기_1193번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sians0209/백준-분수찾기1193번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)