728x90
출근하는 방법1
영훈이는 출근할 때 계단을 통해 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라 갑니다. 어느 날 문득, 호기심이 생겼습니다. 한 계단 또는 두 계단씩 올라가서 끝까지 올라가는 방법은 총 몇 가지가 있을까요? 계단 4개를 올라간다고 가정하면, 이런 방법들이 있습니다.
1, 1, 1, 1
2, 1, 1
1, 2, 1
1, 1, 2
2, 2
총 5개 방법이 있네요.
함수 staircase는 파라미터로 계단 수 n을 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다.
❧ 테스트 셋
def staircase(n):
# Code
# Test
print(staircase(0))
print(staircase(6))
print(staircase(15))
print(staircase(25))
print(staircase(41))
❧ 출력 예시
1
13
987
121393
❧ 정답
Try 1 (Runtime ERROR)
def staircase(n):
if (n <= 1):
return 1
return staircase(n - 1) + staircase(n - 2)
print(staircase(0))
print(staircase(6))
print(staircase(15))
print(staircase(25))
print(staircase(41))
Try 2
def staircase(n):
case = [1]
for i in range(1, n + 1):
# case[0], case[1]은 1로 설정
if i < 2:
case.append(1)
else:
case.append(case[i - 1] + case[i - 2])
return case[n]
print(staircase(0))
print(staircase(6))
print(staircase(15))
print(staircase(25))
print(staircase(41))
1️⃣ 처음에 재귀로 접근 -> 각 계단마다 2계단 밟는 경우를 생각함
└ 결국 피보나치 수열 원리와 동일
2️⃣ 재귀로 피보나치 수열 접근 시, 런타임 에러 발생
3️⃣ 반복문으로 재구현 (시간 복잡도 : O(n))
728x90
'📊 Algorithm > Algorithm PS' 카테고리의 다른 글
[알고리즘 일기] 42. 출근하는 방법2 (0) | 2021.06.11 |
---|---|
[알고리즘 일기] 41. 체육복 (0) | 2021.06.11 |
[알고리즘 일기] 39. 삼송전자 주식 분석 (0) | 2021.06.08 |
[알고리즘 일기] 38. 투자 귀재 규식이3 (0) | 2021.06.07 |
[알고리즘 일기] 37. 투자 귀재 규식이2 (0) | 2021.06.06 |