티스토리 뷰
[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/12914
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 고민]
- 우선 1칸씩 가는 것은 무족건 포함되어야 하므로 경우의 수는 1부터 시작이라고 생각
- 몫과 나머지로 풀어보려고 했음..
(삽질인건 안비밀..)대충 아래와 같은 논리인데 2개의 테스트 케이스는 맞췄으나.. 나머지 다 틀린걸 보면 뭔가 논리에 허점이 있었다 ㅠ - (ex) 3의 경우 - 1칸씩 가는 1 1 1 [1개] + (3//2= 1) + (3 - (2 ** (3//2) = 1) [2개] = 총 3개의 경우의 수
[핵심 개념]
- DP (Dynamic Programming) → '점화식' 활용 (ex) 피보나치 수 f(n) = f(n-1) + f(n-2)
[추가 끄적]
- 피보나치 수라는 것을 생각 못해낸게 babogata...
[작성 코드]
def solution(n):
if n == 1:
return 1
else:
dp = [0] * (n+1)
dp[1] = 1
dp[2] = 2
for i in range(3, n+1):
dp[i] = (dp[i-2] + dp[i-1]) % 1234567
return dp[-1]
'Tech Stacks, Concepts > Algorithm' 카테고리의 다른 글
[프로그래머스] Lv1. 두 개 뽑아서 더하기 (파이썬) (1) | 2023.04.16 |
---|---|
[프로그래머스] Lv2. 이진 변환 반복하기 (파이썬) (0) | 2023.04.15 |
[프로그래머스] Lv2. 최솟값 만들기 (파이썬) (0) | 2023.04.15 |
[프로그래머스] Lv2. 올바른 괄호 (파이썬) / Stack (스택) (0) | 2023.04.14 |
[프로그래머스] Lv1. 크기가 작은 부분문자열 (1) | 2023.04.14 |
댓글