[BOJ] 백준 9095번 : 1, 2, 3 더하기 - Java

2025. 1. 2. 09:41·Algorithm Solving/Java

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

import java.io.*;

public class Main {
    public static int[] memo;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int T = Integer.parseInt(br.readLine()); // 테스트케이스 개수 입력

        for (int i = 0; i < T; i++) {
            int n = Integer.parseInt(br.readLine());
            memo = new int[n+1]; // 1~n까지 활용하기 위해 n+1로 선언
            System.out.println(dp(n));
        }
    }
    public static int dp(int n) {
        // 계산했던 n이라면 저장된 값으로 반환 (중복 방지, 메모이제이션)
        if (memo[n] != 0) return memo[n]; 

        // 재귀 종료 조건: n이 1,2,3일 떄는 직접 반환
        if (n == 1) return 1;   // 1가지 방법) 1
        if (n == 2) return 2;   // 2가지 방법) 1+1, 2
        if (n == 3) return 4;   // 4가지 방법) 1+1+1, 1+2, 2+1, 3

        // 점화식
        memo[n] = dp(n - 1) + dp(n - 2) + dp(n - 3);
        return memo[n];
    }
}

메모이제이션 (Memoization)

메모리에 저장한다는 뜻.

DP를 구현할 때 중복 계산을 방지하기 위해, 계산 결과를 저장하고 재사용하는 기법.

==> 시간 복잡도 감소 (but 공간 복잡도는 증가함; 결과 저장에 메모리를 사용하기 때문)

저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > Java' 카테고리의 다른 글

[programmers] Java Lv.2 - 예상 대진표  (0) 2025.01.06
[programmers] Java Lv.2 - 카펫  (0) 2025.01.03
[BOJ] 백준 1181번 : 단어 정렬 - Java  (0) 2025.01.01
[BOJ] 백준 14226번 : 이모티콘 - Java  (1) 2024.12.31
[BOJ] 백준 2468번 : 안전 영역 - Java  (1) 2024.12.30
'Algorithm Solving/Java' 카테고리의 다른 글
  • [programmers] Java Lv.2 - 예상 대진표
  • [programmers] Java Lv.2 - 카펫
  • [BOJ] 백준 1181번 : 단어 정렬 - Java
  • [BOJ] 백준 14226번 : 이모티콘 - Java
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147)
      • TIL (Today I Learned) (56)
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    HTML
    greedy
    websocket
    dp
    백트래킹
    GROUP BY
    jQuery
    자료구조
    시뮬레이션
    Firebase
    CSS
    javascript
    프로그래머스
    jpa
    mysql
    BOJ
    그리디
    sql
    Google Fonts
    jwt
    BFS
    java
    완전탐색
    다이나믹프로그래밍
    백준
    Subquery
    bootstrap
    DFS
    programmers
    join
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[BOJ] 백준 9095번 : 1, 2, 3 더하기 - Java
상단으로

티스토리툴바