728x90
package BKD_0x10_DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_2193 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[][] dp = new long[91][2];
dp[1][0] = 0;
dp[1][1] = 1;
for(int i=2;i<=N;i++){
dp[i][0] = dp[i-1][0]+dp[i-1][1];
dp[i][1] = dp[i-1][0];
}
System.out.println(dp[N][0] + dp[N][1]);
}
}
이전에 풀었던 문제에서 이차원 배열을 사용해서 문제를 해결했던 기억이 있기에
하. 또 적용해서 풀 때가 된건가. 나란 사람 진짜 어메이징 하다. 내 적용 능력 확인 쌉가능 어디 한번 덤벼보셈 하고
처음 접근 할 때는 끝자리가 0인경우와 1인 경우를 생각해서 진행했다.
그래서 끝자리가 0인 이친수의 개수, 1인 이친수의 개수를 따로 계산하여 저장하였고 점화식은
dp[i][0] = dp[i-1][0]+dp[i-1][1];
dp[i][1] = dp[i-1][0];
이렇게 세웠다.
추가적으로 전체 개수 기준으로 생각 해 보니
1 - 1 - 2 - 3 - 5 .... 순으로 증가하더라
어디서 많이 본 그거다
package BKD_0x10_DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_2193 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] dp = new long[91];
dp[0] = 0;
dp[1] = 1;
for(int i=2;i<=N;i++){
dp[i] = dp[i-1]+dp[i-2];
}
System.out.println(dp[N]);
}
}
이렇게도 된다.
위에게 윗 코드
아래있는게 아래 코드이다
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
80 삐약 : 백준 14501| 퇴사 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.18 |
---|---|
79 삐약 : 백준 9461| 파도반 수열 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.18 |
77 삐약 : 백준 11727| 2 x N 타일링 2 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.17 |
76 삐약 : 백준 1003| 피보나치 함수 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.17 |
75 삐약 : 백준 11659| 구간 합 구하기 4 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.16 |