출처 : 프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/12914
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
더보기
먼저, 생각해야 할 부분
1. DP의 대표적인 유형
1칸, 2칸씩만 올라갈 수 있다는 부분부터 1칸 전, 2칸 전을 고려해서 누적해가는 dp 유형임을 눈치채자.
풀이
#딱 봐도 dp 문제
#1칸 전 + 2칸 전을 더하는데 거기서 무엇을 더 고려해야할까요?
#1칸 전에서 목적지에 도달하는 방법은 1개
#2칸 전에서 목적지에 도달하는 방법은 1칸 + 1칸, 2칸이나 1칸 + 1칸은 위에 포함되므로 1개
#따라서 dp[n] = dp[n-1] + dp[n-2]
#초기값은 dp[1] = 1, dp[2] = 2
def solution(n):
answer = 0
if n == 1:
return 1
if n == 2:
return 2
dp = [0] * (n + 1)
dp[1] = 1
dp[2] = 2
for i in range(3, n + 1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n] % 1234567
Github
GitHub - bh2980/Algorithm-Problem: 알고리즘 풀이 흔적들
알고리즘 풀이 흔적들. Contribute to bh2980/Algorithm-Problem development by creating an account on GitHub.
github.com
'알고리즘 > Python' 카테고리의 다른 글
[python] 프로그래머스 - k진수에서 소수 개수 구하기 (0) | 2023.03.09 |
---|---|
[python] 프로그래머스 - 튜플 (0) | 2023.03.09 |
[python] 프로그래머스 - 개인정보 수집 유효기간 (0) | 2023.03.09 |
[python] 프로그래머스 - 성격 유형 검사하기 (0) | 2023.03.09 |
[python] 프로그래머스 - 최솟값 만들기 (0) | 2022.07.17 |