SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
Calkin-Wilf tree는 모든 양의 유리수를 정확히 하나씩 포함하고 있는 트리다. 이 트리는 다음과 같이 정의된다
∙ 트리의 루트는 1/1 을 나타낸다.
∙ 트리의 각 노드는 왼쪽 자식과 오른쪽 자식을 가지는데 어떤 노드가 a/b 를 나타내고 있다면, 왼쪽 자식은 a/a+b 를 오른쪽 자식은 a+b/b 를 나타낸다.
루트 노드에서부터, 자식을 따라 내려간 방향이 순서대로 주어질 때, 마지막에 위치한 노드가 어떤 유리수를 나타내는지 구하는 프로그램을 작성하라.
제출 답안
재귀호출로 풀었다~
def calkin(a, b, nums):
if len(nums)==0:
return a, b
else:
if nums[0]=="L":
nums.pop(0)
return calkin(a, a+b, nums)
elif nums[0]=="R":
nums.pop(0)
return calkin(a+b, b, nums)
T = int(input())
for test_case in range(1, T+1):
nums = list(input())
a, b = 1, 1
a, b = calkin(a, b, nums)
print(f"#{test_case} {a} {b}")
'알고리즘 > Python' 카테고리의 다른 글
[Python | SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2023.05.15 |
---|---|
[Python | SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (0) | 2023.05.12 |
[Python | SWEA] D3-1217, 10570 (0) | 2023.05.10 |
[Python | SWEA] 1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2023.05.10 |
[Python | SWEA] 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (0) | 2023.05.10 |