실버3

문제요구사항.
0,1의 갯수를 카운트해라
0,1의 갯수를 저장할 배열 생성
점화식을 생각하자.
fibo(1)일때는 1로 출력 ,fibo(0)이면 0으로 출력
1,0이 아니라면 1,0의 조합으로 만들어줄 것
public class Main {
// 메모이제이션을 위한 배열, 각 숫자의 0과 1 호출 횟수를 저장
static int[][] memo = new int[41][2];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testcase = Integer.parseInt(br.readLine());
// 기본 케이스 초기화
memo[0][0] = 1; // 0 호출 횟수
memo[0][1] = 0; // 1 호출 횟수
memo[1][0] = 0;
memo[1][1] = 1;
// 피보나치 수열 계산 및 호출 횟수 업데이트
for (int i = 2; i <= 40; i++) {
for (int j = 0; j <= 1; j++) {
memo[i][j] = memo[i - 1][j] + memo[i - 2][j];
}
}
// 테스트 케이스 처리
for (int i = 0; i < testcase; i++) {
int n = Integer.parseInt(br.readLine());
System.out.println(memo[n][0] + " " + memo[n][1]);
}
}
}
처음에 문제에 주어진 피보나치 수열을 구현하는 메서드를 if문으로 만들었으나 결과값을 잘 읽어보니 굳이라는 생각이 들어서 지우고 이중for문으로 대신하였다.
문제를 요구사항과 제한범위를 읽어보면 코드를 한줄이라도 덜 쓰는 방법이 생긴다는것을 느꼈다