문제 설명
•
완두콩의 유전 규칙에 따라 특정 세대와 위치의 완두콩 형질을 계산하는 문제
예제 입력/출력
queries | result |
[[3, 5]] | ["RR"] |
[[3, 8], [2, 2]] | ["rr", "Rr"] |
[[3, 1], [2, 3], [3, 9]] | ["RR", "Rr", "RR"] |
[[4, 26]] | ["Rr"] |
제약 조건
•
•
quereis의 원소는 [n, p] 형태
◦
(세대)
◦
(개체)
문제 풀이
접근1 브루트 포스 - 상한
접근2 재귀 - 상한
풀이 코드
•
재귀 - 상한
def dfs(n, p):
# Base Case
if n == 1:
return "Rr"
# Recursive Case
parent_idx = (p - 1) // 4 + 1 # 1-index
parent = dfs(n - 1, parent_idx) # 부모의 형질 계산
child_idx = (p - 1) % 4 # 부모의 자식 중 몇 번째인지 계산
if parent == "RR":
return "RR"
elif parent == "rr":
return "rr"
else: # parent == "Rr"
return ["RR", "Rr", "Rr", "rr"][child_idx]
def solution(queries):
result = []
for query in queries:
result.append(dfs(query[0], query[1]))
return result
Python
복사