알고리즘/문제

(22.03.19) (Baekjoon) 15988. 1,2,3 더하기 3

Job_E 2022. 3. 19. 19:49

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

 

15988번: 1, 2, 3 더하기 3

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

www.acmicpc.net

1번 문제를 풀었다면 사실상 거저먹는 문제다.

차이라고 해봐야 범위만 다르기 때문(1 : 10, 3 : 1000000. 이때 3번은 1000000009로 나눈 나머지를 출력한다.)

비교를 위해 풀이 링크를 올려놓는다.

https://kbjid17.tistory.com/4

 

(21.12.31) (Baekjoon 9095) 1,2,3 더하기(Java)

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 입력한 숫자를 1,2,3으로 표현할 수 있는 경우의 수..

kbjid17.tistory.com

 

더보기

소스코드 보기

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	static int T,N;
	static long[] ar;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		ar = new long[1000001];
		ar[1] = 1;
		ar[2] = 2;
		ar[3] = 4;
		for (int i = 4; i <= 1000000; i++) {
			ar[i] = ((ar[i-1] + ar[i-2]) % 1000000009 + ar[i-3]) % 1000000009;
		}
		for (int i = 0; i < N; i++) {
			int n = Integer.parseInt(br.readLine());
			System.out.println(ar[n]);
		}

	}

}

위처럼 Long으로 선언해주고, 나머지 연산만 신경써주면 된다.