Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- candies
- Reverse Shuffle Merge
- Recursion: Davis' Staircase
- DFS: Connected Cell in a Grid
- python
- Special String Again
- hackerrank
- programmers
- Algorithm
- 해커랭크
- 피보나치 함수
- 야근지수
- 격파르타 합격후기
- 머신러닝
- 구슬탈출2
- BFS: Shortest Reach in a Graph
- 백준
- 격파르타 후기
- Common Child
- 코딩테스트
- Interview Preparation Kit
- 매칭점수
- Find the nearest clone
- 격파르타 장점
- Max Array Sum
- 알고리즘
- [sqld]자격증합격
- 프로그래머스
- 파이썬
- Roads and Libraries
Archives
- Today
- Total
Archive
[Hackerrank] [Medium] Recursion: Davis' Staircase 본문
https://www.hackerrank.com/challenges/ctci-recursive-staircase/problem
풀이
- 계단을 1칸, 2칸, 3칸 올라갈 수 있을 때, n을 입력으로 받았을 때 가능한 모든 경우의 수 찾는 문제.
- 재귀함수로 풀지 않고, memoization으로 풀 수 있음.
- bottom-up으로 풀었고, 식은 next_step = next_step-1 + next_step-2 + next_step-3 경우의 수를 더해줌.
- 한 칸을 올라갈 수 있기 때문에 (next_step - 1)의 경우에 수에 마지막 1칸이 붙게 되고,
- (next_step - 2) 경우의 수에 마지막 2칸, (next_step - 3) 경우의 수에 마지막 3칸이 붙으면 됨.
def stepPerms(n):
count_dict = {}
n1, n2, n3 = 1, 2, 3
count_dict[1] = 1
count_dict[2] = 2
count_dict[3] = 4
while n not in count_dict.keys():
next_num = n3 + 1
count_dict[next_num] = count_dict[next_num - 1] + count_dict[next_num - 2] + count_dict[next_num - 3]
n3 = next_num
return count_dict[n]
'공부 > Algorithm' 카테고리의 다른 글
[Hackerrank] [Medium] Roads and Libraries (0) | 2020.09.02 |
---|---|
[programmers] [Level3] 야근지수 (0) | 2020.09.01 |
[Hackerrank] [Medium] Candies (0) | 2020.09.01 |
[Hackerrank] [Medium] Abbreviation (0) | 2020.09.01 |
[Hackerrank] [Medium] Max Array Sum (0) | 2020.08.31 |
Comments