_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (272)
    • 데이터 엔지니어링 (29)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

[코딩테스트] 프로그래머스 멀리 뛰기 파이썬(Python)
코딩테스트

[코딩테스트] 프로그래머스 멀리 뛰기 파이썬(Python)

2022. 11. 18. 22:02
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12914#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

def solution(n):
    array = [0]* (n+1)
    for i in range(n+1):
        if i <= 1:
            array[i] = 1
        else:
            array[i] = array[i-2] + array[i-1]
    
    return array[n] % 1234567

이 문제는 숨겨진 점화식을 찾아내 DP로 해결했습니다.

 

n = 1 : (1칸), result = 1

n = 2 : (1칸, 1칸), (2칸) result = 2

n = 3 : (1칸, 1칸, 1칸), (1칸, 2칸), (2칸, 1칸) result = 3

n = 4 : (1칸, 1칸, 1칸, 1칸), (1칸, 1칸, 2칸), (1칸, 2칸, 1칸), (2칸, 1칸, 1칸), (2칸, 2칸) result = 5

n = 5 : (1,1,1,1,1), (1,1,1,2), (1,1,2,1),(1,2,1,1),(2,1,1,1),(1,2,2),(2,1,2),(2,2,1) result = 8

 

위의 과정을 아래와 같은 점화식으로 표현할 수 있습니다.

A[1] = 1

A[2] = 2

A[3] = 3

A[4] = 5

A[5] = 8

...

A[n] = A[n-1] + A[n-2]

 

문제를 해결하는데 필요한 식을 구했고 이 식을 코드로 작성을 할 때 재귀로 해결할 수 있지만

재귀로 풀 경우에는 시간초과가 나기 때문에 DP로 해결하였습니다.

 

array = [0]* (n+1)

n을 구해야 하기 때문에 n+1로 모든 값은 0으로 초기화를 해줍니다.

for i in range(n+1):
        if i <= 1:
            array[i] = 1
        else:
            array[i] = array[i-2] + array[i-1]

n+1 까지 i를 증가시키며 반복문을 진행하는데 이때 i가 1보다 작을 때 즉 0과 1일 때에는 array[i]를 1로 초기화 해줍니다.

array[0]과 array[1]을 1로 초기화해줘야 array[2]를 올바르게 구하고 나머지 array[i]를 구할 수 있습니다.

 

for문을 다 진행하고 난뒤

문제에서 주어진 대로 우리는 결과에 % 1234567한 값을 반환해야하기 때문에

return array[n] % 1234567

위의 코드로 문제를 해결합니다.

반응형

'코딩테스트' 카테고리의 다른 글

[코딩테스트] 프로그래머스 나이 정보가 없는 회원 수 구하기 MySQL  (0) 2022.11.19
[코딩테스트] 프로그래머스 동물 수 구하기 MySQL  (0) 2022.11.18
[코딩테스트] 프로그래머스 k진수에서 소수 개수 구하기 파이썬(Python)  (0) 2022.11.17
[코딩테스트] 프로그래머스 인기있는 아이스크림 MySQL  (0) 2022.11.17
[코딩테스트] 프로그래머스 기사단원의 무기 파이썬(Python)  (0) 2022.11.17
    '코딩테스트' 카테고리의 다른 글
    • [코딩테스트] 프로그래머스 나이 정보가 없는 회원 수 구하기 MySQL
    • [코딩테스트] 프로그래머스 동물 수 구하기 MySQL
    • [코딩테스트] 프로그래머스 k진수에서 소수 개수 구하기 파이썬(Python)
    • [코딩테스트] 프로그래머스 인기있는 아이스크림 MySQL
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바