[백준]1904번 01타일 - DP

2021. 2. 6. 17:40·SW개발/코딩테스트

 

n = int(input())

dp = [1, 2, 3]
if n <= 3:
    print(int(dp[n-1]))
else:
    for i in range(3, n):
        dp.append((dp[i - 2] + dp[i - 1]) % 15746) # 1,000,000이 들어올 경우 값이 int 범위를 벗어날 수 있음
        # 따라서 애초에 나머지 연산을 수행 후 값을 저장.
    print(int(dp[-1]))

 

코드 설명

처음에 길이가 1, 2, 3 으로 만들 수 있는 갯수를 지정하여 초기화 하여 준다. 만약 3 미만일 경우에는 저장된 값에서 바로 출력한다.

그렇지 않을 경우에는 3부터 반복을 통해 dp[i-2] + dp[i-1] 점화식을 이용하여 값을 누적시켜 준다.

저장된 값중 가장 마지막에 있는 값을 출력하여 준다.

 

Point : DP 문제는 점화식을 세우는 것이 중요하다. 초기 갯수는 3개로 진행하였고, 4개 이상 진행될 시에는 i-2 번째와 i-1 번째의 값을 더한 식이 나오게 된다. 추가적으로 숫자의 범위가 크므로 값을 저장할 때 미리 %15746 나머지 연산을 수행해서 int 값의 범위를 벗어나는 것을 방지해 줄 수 있다. (마지막에 나머지 연산하는 것과 결과는 동일하게 나온다)

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[백준]1149번 RGB거리 - DP  (0) 2021.02.08
[백준]9461번 파도반 수열 - DP  (0) 2021.02.07
[백준]9184번 신나는 함수 실행 - DP  (0) 2021.02.05
[백준]1003번 피보나치 함수 - DP  (0) 2021.02.04
[백준]13305번 주유소 - 그리디  (0) 2021.02.03
'SW개발/코딩테스트' 카테고리의 다른 글
  • [백준]1149번 RGB거리 - DP
  • [백준]9461번 파도반 수열 - DP
  • [백준]9184번 신나는 함수 실행 - DP
  • [백준]1003번 피보나치 함수 - DP
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (309)
      • SW개발 (305)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (3)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    트리 #AVL #알고리즘 #자료구조
    g
    오픈소스
    배달비 공유
    배달
    배공파용
    음식
    컨트리뷰터
    Contributor
    플레이스토어
    어플리케이션
    django
    라이프 스타일
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[백준]1904번 01타일 - DP
상단으로

티스토리툴바