티스토리 뷰

[문제 링크]

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]

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함