200921 월 [BOJ] 2193
❗ Dynamic Programming 이란, 이전에 계산된 값들을 통해 구하고자 하는 값을 얻는 풀이방법.
BOJ 2193
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
br.close();
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];
}
bw.write(String.valueOf(dp[N][0] + dp[N][1]));
bw.flush();
bw.close();
}
}
Bottom-up 방식.
자료형을 int
로 했을 땐 값 범위가 벗어나 버림. long
으로 바꾸자 정답~
int
의 범위 : -2,147,483,648~2,147,483,647
오늘 면접 중에도 질문을 들었는데, "대략 -20억에서 20억 사이입니다~" 혹은 "-2의 31제곱에서 2의 31제곱-1입니다" 라고만 대답했어도 얼마나 좋았을까😑
Author And Source
이 문제에 관하여(200921 월 [BOJ] 2193), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyuhyunhan/200921-월-BOJ-2193저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)