[Python] 9095 - 1, 2, 3 더하기

2024. 11. 29. 23:32·Coding-Test/백준
728x90
반응형

풀이

입력 받은 정수를 1, 2, 3의 합으로 나타내는 문제이다. 

이 문제를 해결하기 위해선 한 가지 규칙을 알아야 하는데, 바로 1, 2, 3을 제외한 모든 숫자는 DP로 표현할 수 있고, DP로 문제를 해결할 수 있다. 쉽게 말해서 정수 4의 경우는 총 7가지로, 1의 경우 + 2의 경우 + 3의 경우 = 1 + 2 + 4로 정해진다.

 

여기서 DP란? 다이나믹 프로그래밍의 약자로, 

DP를 설명하기 위해 가장 많이 활용되는 수식이 바로 피보나치 수열이다.

 

피보나치 수열이란? n번째 숫자는 n-1번째 + n-2번째 숫자로 구성된 수열이다.

결국 n번째 수를 구하기 위해선 이전의 수를 알고 있어야 하고, 이를 이용해 다음의 수를 예측(계산)할 수 있다.

 

DP를 활용해 코드를 작성하면 다음과 같다.

# 9095 1, 2, 3 더하기

n = int(input())

for T in range(n):
    n, i = int(input()), 4
    plus = [None, 1, 2, 4] # 0, 1, 2, 3의 값

    while i <= n:
        plus.append(plus[i - 1] + plus[i - 2] + plus[i - 3]) # 리스트의 이전 인덱스들의 합
        i += 1

    print(plus[n])

 

 

728x90
반응형
저작자표시 (새창열림)

'Coding-Test > 백준' 카테고리의 다른 글

[Python] 11726 - 2×n 타일링  (4) 2025.01.03
[Python] 2606 - 바이러스  (1) 2025.01.02
[Python] 1463 - 1로 만들기  (2) 2024.11.29
[Python] 1764 - 듣보잡  (0) 2024.11.27
[Python] 11723 - 집합  (0) 2024.11.27
'Coding-Test/백준' 카테고리의 다른 글
  • [Python] 11726 - 2×n 타일링
  • [Python] 2606 - 바이러스
  • [Python] 1463 - 1로 만들기
  • [Python] 1764 - 듣보잡
희완
희완
희완한 코딩일상
    반응형
  • 희완
    Code-Heewan
    희완
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Python
        • 가상환경
        • Algorithm
      • Coding-Test
        • 백준
        • 프로그래머스
        • 항해99
      • Data-Analysis
      • 웹 개발
        • django
      • AWS
      • 공모전
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
희완
[Python] 9095 - 1, 2, 3 더하기
상단으로

티스토리툴바