📜 코딩테스트/BAEKJOON\다이나믹 프로그래밍

백준 9095번(DP) : 1, 2, 3 더하기 (JAVA) 문제 풀이

2021. 8. 10. 18:07
목차
  1. 1. 테이블 정의하기
  2.  
  3. 2. 점화식 구하기
  4.  
  5. 3. 초기값 세팅
반응형

https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

 


✏️ 문제

 


🔐 문제 해결

1. 테이블 정의하기

테이블은 dp[i]를 1,2,3으로 표현할 수 있는 횟수로 설정하겠습니다.

 

2. 점화식 구하기

먼저 dp[4]는 본문에도 나와있듯이 아래와 같이 총 7가지가 있습니다.

이것을 1, 2, 3으로 나눠서 생각해보자면,

  • 하나의 숫자를 3로 고정하고, 나머지 1을 1, 2, 3으로 조합하는 경우
    • 1 + 3
  • 하나의 숫자를 2로 고정하고, 나머지 2를 1, 2, 3으로 조합하는 경우
    • 1 + 1 + 2
    • 2 + 2
  • 하나의 숫자를 1로 고정하고, 나머지 3을 1, 2, 3으로 조합하는 경우
    • 1 + 1 + 1 + 1
    • 1 + 2 + 1
    • 2 + 1 + 1
    • 3 + 1
dp[4] = dp[1] + dp[2] + dp[3];
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];

 

3. 초기값 세팅

초기값은 위에서 dp[4]를 구한 과정에서 얻은 값들을 아래와 같이 세팅할 수 있습니다.

dp[1] = 1;
dp[2] = 2;
dp[3] = 3;

 

 


🗝 전체 코드

import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();

        int[] dp = new int[12];

        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 4;

        for(int i=4; i<= 11; i++) {
            dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
        }

        int N = Integer.parseInt(bf.readLine());

        for(int i=0; i<N; i++){
            sb.append(dp[Integer.parseInt(bf.readLine())] + "\n");
        }

        System.out.print(sb.toString());
    }
}
반응형
저작자표시 (새창열림)
  1. 1. 테이블 정의하기
  2.  
  3. 2. 점화식 구하기
  4.  
  5. 3. 초기값 세팅
'📜 코딩테스트/BAEKJOON\다이나믹 프로그래밍' 카테고리의 다른 글
  • 백준 2156번 (DP) : 포도주 시식 (JAVA) 문제 풀이
  • 백준 1003번(DP) - 피보나치 함수 (JAVA) 문제 풀이
  • 백준 2579번(DP) : 계단 오르기 (JAVA) 문제 풀이
  • 백준 1463번(DP) : 1로 만들기 (JAVA) 문제 풀이
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
백준 9095번(DP) : 1, 2, 3 더하기 (JAVA) 문제 풀이
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.