[오늘의 코테연습장]-백준 9625번
문제
문제 해결 과정
처음에 문제를 풀려고 했을 때는
- 변수 K로 a,b 개수 입력받기
- void a() 함수와 b함수를 만들어 두 함수 다 for문을 돌려 각각 a를 b로 변환, b를 ba로 변환한다.
이렇게 문제해결과정을 썻었는데 DP 문제이다 보니 규칙성이 있을 것같아 버튼을 여섯번 누를 때까지의 a,b의 개수를 세 보았다.
세보니 규칙성이 나왔다.
A → BA → BAB → BABBA ... 이런식으로 직접 규칙에 따라 A,B를 변환해 가면서 A,B의 개수를 세보았다.
K번 | A의 개수 | B의 개수 |
---|---|---|
1 | 0 | 1 |
2 | 1 | 1 |
3 | 1 | 2 |
4 | 2 | 3 |
5 | 3 | 5 |
6 | 5 | 8 |
A의 개수는 B의 K-1번 째의 개수와 동일
B의 개수는 K-1번째의 A와 B의 개수를 더한 값
이렇게 A,B값의 규칙성을 찾았고 이를 수식으로 표현하여 코드를 구현하였다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int k=scan.nextInt();
int A=0; int B=1;
int sum=0;
for(int i=1;i<k;i++){
sum=A+B;
A=B;
B=sum;
}
System.out.println(A);
System.out.println(B);
}
}
회고
처음에 A,B를 규칙에 따라 변환할 때 잘못변환해서 규칙성을 못 찾았었다.
처음부터 다시 문제를 읽어보고 다시 해보니 규칙성을 찾을 수 있었다.
앞으로는 문제를 제대로 읽어야겠다.
Author And Source
이 문제에 관하여([오늘의 코테연습장]-백준 9625번), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minina/오늘의-코테연습장-백준-9625번저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)