[BOJ] 9095. 1, 2, 3 더하기

2025. 7. 15. 16:56·BOJ

📌 문제 제목

문제 링크: BOJ 9095

🗒️ 문제 설명

정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하여라.

e.g. 4를 1, 2, 3으로 나타내는 방법은 총 7가지 이다.

  • 1 + 1 + 1 + 1
  • 1 + 1 + 2
  • 1 + 2 + 1
  • 2 + 1 + 1
  • 2 + 2
  • 1 + 3
  • 3 + 1

시간 제한: 1초

메모리 제한: 512MB

1 <= N < 11


💡 문제 해결 아이디어

  • 테이블 정의
    • d[i]는 i를 1, 2, 3으로 만들 수 있는 방법의 수
  • 점화식 찾기
    • d[4]
      • 1+1+1+1, 1+2+1, 2+1+1, 3+1 -> d[3]을 만드는 방법 + 1
      • 1+1+2, 2+2 -> d[2]를 만드는 방법 + 2
      • 1+3 -> d[1]을 만드는 방법 + 3
      • ※ d[4] = d[1] + d[2] + d[3]
  • 초기값 정하기
    • d[1] = 1
    • d[2] = 2
    • d[3] = 4

⌛️ 시간 복잡도

  • O(N)

✅ 최종 코드

import sys
input = sys.stdin.readline

t = int(input().strip())

dp = [0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 0]

for i in range(4, 11):
    dp[i] = dp[i-1] + dp[i-2] + dp[i-3]

for _ in range(t):
    n = int(input().strip())
    print(dp[n])

 

'BOJ' 카테고리의 다른 글

[BOJ] 1149. RGB거리  (0) 2025.07.16
[BOJ] 2579. 계단 오르기  (0) 2025.07.15
[BOJ] 1463. 1로 만들기  (0) 2025.07.15
[BOJ] 30804. 과일 탕후루  (0) 2025.07.14
[BOJ] 1806. 부분합  (0) 2025.07.14
'BOJ' 카테고리의 다른 글
  • [BOJ] 1149. RGB거리
  • [BOJ] 2579. 계단 오르기
  • [BOJ] 1463. 1로 만들기
  • [BOJ] 30804. 과일 탕후루
rubato.dev
rubato.dev
  • rubato.dev
    rubato.dev
    rubato.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (33) N
      • BOJ (28) N
      • 알고리즘 (4)
      • TIL (0)
      • Project (1) N
  • 인기 글

  • 태그

    stack
    Zelda
    Next.js
    PYTHON
    BOJ
    DFS
    BFS
    스택
    backtracking
    PriorityQueue
    Project
    투 포인터
    Algorithm
    dp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
rubato.dev
[BOJ] 9095. 1, 2, 3 더하기
상단으로

티스토리툴바