[Java] 9461번: 파도반 수열 Silver 3

상곤·2025년 5월 11일

Dynamic Programming

목록 보기
7/32
post-thumbnail

문제 링크

이 문제는 이렇게 하면 쉽게 풀 수 있다 라고 알려줄 만한 게 딱히 없다..
그냥 그림을 봐도 규칙이 보이고, 숫자를 봐도 규칙이 보인다..

점화식은 이렇게 된다.

X[N] = X[N-1] + X[N-5]

정답

import java.io.*;
import java.util.*;

public class Main {
    private static long[] dp;

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

        // T 입력 받기
        int T = Integer.parseInt(br.readLine());

        // dp
        dp = new long[101];
        dp[1] = 1;
        dp[2] = 1;
        dp[3] = 1;
        dp[4] = 2;
        dp[5] = 2;
        for (int i = 6; i <= 100; i++) {
            dp[i] = dp[i - 1] + dp[i - 5];
        }

        // 출력
        for (int i = 0; i < T; i++) {
            int N = Integer.parseInt(br.readLine());
            System.out.println(dp[N]);
        }
    }
}

이렇게 출력을 여러 번 해야 할 때는 StringBuilderBufferedWriter를 사용하면 시간을 단축할 수 있다!

BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
...
bw.write(String.valueOf(dp[N]) + "\n");
...
bw.flush();
bw.close();

BufferedWriter 사용 시 주의할 점

int, long 타입을 출력할 때는 String.valueOf()를 사용해야 한다.
bw.write(int)는 정수 값을 ASCII 문자로 출력하기 때문! → bw.write(String.valueOf(dp[N]))

StringBuilder

StringBuilder sb = new StringBuilder();
...
sb.append(dp[N]).append("\n");
...
System.out.println(sb);

📌 StringBuilder는 toString() 없이도 append 가능하다! **

StringBuilder.append(int), append(long) 는 내부적으로 String.valueOf()를 호출해 변환해 주므로 toString()을 쓸 필요가 없다.

profile
🫠

0개의 댓글