9461번: 파도반 수열
문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 �
www.acmicpc.net
풀이
변의 길이가 1인 정삼각형에서 시작하여 변을 이어가며 정삼각형을 그리는 문제로
P(1) = 1, P(2) = 1, P(3) = 1, P(4) = 2, P(5) = 2 ... P(11) = 12까지 예시가 주어져있다.

위 규칙을 통해 P(N) = P(N-1) + P(N-5) 를 알 수 있다
P(1) ~ P(5)일 경우는 예외로 두고 N = 6일때부터 풀었다
cf) N이 100까지로 한정되어 있기때문에 이 범위가 int의 범위를 벗어나는지를 체크해보고 넘어가야 한다
import java.io.*;
import java.util.*;
//https://www.acmicpc.net/problem/9461
public class algo_9461_dp {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
long[] P = new long[101];
P[1] = 1; P[2] = 1; P[3] = 1; P[4] = 2; P[5] = 2;
for(int i = 6; i<= 100; i++) {
P[i] = P[i-1] + P[i -5];
}
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
bw.write(P[N] + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 3036번 링 (0) | 2020.05.17 |
---|---|
[Java] 백준 14501번 퇴사 (0) | 2020.05.17 |
[Java]백준 1932번 정수삼각형 (0) | 2020.05.17 |
[Java]백준 11726번 2Xn 타일링(Dynamic Programming) (0) | 2020.05.08 |
[Java] 백준 2293번 동전 1 (Dynamic Programming) (0) | 2020.05.08 |
댓글