알고리즘

[백준, 자바, 9625번] BABBA

hminor 2024. 10. 25. 15:04
반응형

풀이

  • 해당 문제를 봤을 때, 어떤 규칙이 있는지 K=7까지 확인해보니까
  • 피보나치처럼 K번째 인덱스 문자열은
  • K-1번째 인덱스 +K-2번째 인덱스 값을 합친  문자열이라는 것을 확인하여
  • 처음부터 해당 값의 A와B의 개수를 센 2차원 배열을 만들어 저장 후 체크하여 해결

 

import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.Arrays;
public class _9625 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int K = sc.nextInt();
        int[][] li = new int[K+1][2];
        li[0] = new int[]{1,0};
        li[1] = new int[]{0,1};
        if (K>=2) {
            for (int i=2; i<=K; i++) li[i] = new int[]{li[i-1][0]+li[i-2][0], li[i-1][1]+li[i-2][1]};
        }
        System.out.println(Arrays.stream(li[K]).mapToObj(String::valueOf).collect(Collectors.joining(" ")));
    }
}

// 0, A
// 1, B
// 2, BA
// 3, BAB
// 4, BABBA
// 5, BABBABAB
// 6, BABBABABBABBA
// 7, BABBABABBABBABABBABAB