[오늘의 코테연습장]-백준 9625번

문제


문제 해결 과정

처음에 문제를 풀려고 했을 때는

  1. 변수 K로 a,b 개수 입력받기
  2. void a() 함수와 b함수를 만들어 두 함수 다 for문을 돌려 각각 a를 b로 변환, b를 ba로 변환한다.

이렇게 문제해결과정을 썻었는데 DP 문제이다 보니 규칙성이 있을 것같아 버튼을 여섯번 누를 때까지의 a,b의 개수를 세 보았다.

세보니 규칙성이 나왔다.

A → BA → BAB → BABBA ... 이런식으로 직접 규칙에 따라 A,B를 변환해 가면서 A,B의 개수를 세보았다.

K번A의 개수B의 개수
101
211
312
423
535
658

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를 규칙에 따라 변환할 때 잘못변환해서 규칙성을 못 찾았었다.

처음부터 다시 문제를 읽어보고 다시 해보니 규칙성을 찾을 수 있었다.

앞으로는 문제를 제대로 읽어야겠다.

좋은 웹페이지 즐겨찾기