[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  (1) 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)
  • 인기 글

  • 태그

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

  • 최근 댓글

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

티스토리툴바