728x90
반응형
https://www.acmicpc.net/problem/17291
너무 어렵게 생각했다. 2차원 배열까지 생각할 필요 없다.
짝수 일, 홀수 일 기준으로 X일 전에 몇 마리가 죽는 지를 체크하자.
- 제목
새끼치기
- 조건
시간 제한 : 1 초
메모리 제한 : 256 MB
- 문제
실험실에서 새로운 종의 벌레 한 마리가 탄생하였다. 벌레는 스스로 분열하며, 분열하면 자기 자신과 같은 벌레를 한 마리 만들어 내게 된다. 벌레가 분열하는 규칙은 다음과 같다.
벌레는 기준년도 1년 2월에 1마리가 탄생한다.
벌레는 매년 1월이 되면 분열한다. 분열시 본래의 개체는 그대로, 새로운 개체가 하나 탄생하는 것으로 본다.
홀수년도에 탄생한 개체는 3번 분열시, 짝수년도에 탄생한 개체는 4번 분열시 사망한다.
예를 들어, 기준년도 1년 2월에 존재하던 벌레는, 2년 1월, 3년 1월, 4년 1월에 분열하고 사망하여 4년 말에는 존재하지 않게 된다. 이 때, N년 말에 존재하는 벌레의 수를 구하여라.
- 입력
첫째 줄에 자연수 N(1 ≤ N ≤ 20)이 주어진다.
- 출력
첫째 줄에 N년 말에 존재하는 벌레의 수를 출력한다.
예제 입력1 | 예제 출력1 |
4 | 7 |
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder sb = new StringBuilder();
static StringTokenizer st;
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
int[] dp = new int[20 + 1];
dp[1] = 1; dp[2] = 2; dp[3] = 4; dp[4] = 7;
for (int i = 5; i <= N; i++) {
dp[i] = dp[i - 1] * 2 - (i % 2 == 0 ? (dp[i - 4] + dp[i - 5]) : 0);
}
System.out.println(dp[N]);
}
}
728x90
반응형
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 23830 - 제기차기 (0) | 2024.05.23 |
---|---|
[BOJ/백준] 27975 - 인덕션 (0) | 2024.04.12 |
[BOJ/백준] 27212 - 미팅 (0) | 2024.03.07 |
[BOJ/백준] 31477 - 양갈래 구하기 (1) | 2024.03.06 |
[BOJ/백준] 25307 - 시루의 백화점 구경 (0) | 2024.03.05 |