🔗 문제 링크
📝 풀이 과정
처음 변의 길이가 1인 정삼각형을 기준으로 시계방향으로 정삼각형을 추가하는 수열이다.
한 변의 길이가 2일 때까지는 한 변에 붙는 경우와 두 변에 붙는 경우도 존재하지만, 한 변의 길이가 3 이상이 되면 두 변에 걸쳐 삼각형이 생기는 것을 알 수 있다.
N = 6
일 때, 1번째와 5번째 삼각형의 두 변의 걸쳐 생성되었고,N = 7
일 때, 2번째와 6번째, N = 8
일 때, 3번째와 7번째 삼각형의 변을 맞대고 생성되었다.
따라서, $P(N) = P(N-1) + P(N-5)$ 라는 규칙을 찾을 수 있다.
N < 6일 때는 불규칙한 수열이기 때문에 값을 미리 대입하고, 이후로는 반복문을 통해 값을 대입하였다.
💡 단, N이 일정 값 이상 커지게 되면 Integer.MAX_VALUE
를 넘게 되므로 int
가 아닌 long
으로 배열을 선언해주어야 한다! 언제나 범위에 조심하자!
💻 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
long[] memo = new long[101];
memo[1] = memo[2] = memo[3] = 1;
memo[4] = memo[5] = 2;
for (int i = 6; i <= 100; i++)
memo[i] = memo[i - 1] + memo[i - 5];
for (int tc = 1; tc <= T; tc++)
System.out.println(memo[sc.nextInt()]);
}
}
📊 제출 결과
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준] 11047번: 동전 0 - JAVA (0) | 2020.12.13 |
---|---|
[백준] 10026번: 적록색약 - JAVA (0) | 2020.12.13 |
[백준] 9375번: 패션왕 신해빈 - JAVA (0) | 2020.12.13 |
[백준] 9205번: 맥주 마시면서 걸어가기 - JAVA (0) | 2020.12.13 |
[백준] 9095번: 1, 2, 3 더하기 - JAVA (0) | 2020.12.13 |