알고리즘 공부/문제 풀이

[JAVA] 백준 16438 원숭이 스포츠

valid_ming 2021. 10. 14. 22:32

https://www.acmicpc.net/problem/16438

 

16438번: 원숭이 스포츠

승민이는 동물원의 원숭이들을 관리하는 사육사입니다. 이 동물원에는 N마리의 원숭이들이 있고 원숭이들에게 1번부터 N번까지 번호를 붙였습니다. 7일간 동물원에서 원숭이들끼리 스포츠 경기

www.acmicpc.net

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        monkeys = new char[7][N];
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<N;i++) sb.append('A');

        make(0, N-1, 0);

        for(int i=0;i<7;i++){
            String str = new String(monkeys[i]);
            if(str.equals(sb.toString())){
                str = str.substring(1);
                str += "B";
            }
            System.out.println(str);
        }
    }

    static char[][] monkeys;
    static int cnt = 0;

    public static void make(int start, int end, int layer){
        if(layer==7){
            cnt++;
            return;
        }

        int mid = (start+end)/2;
        for(int i=start;i<=mid;i++) monkeys[layer][i] = 'A';
        for(int i=mid+1;i<=end;i++)  monkeys[layer][i] = 'B';
        make(start, mid, layer+1);
        make(mid+1, end, layer+1);

    }
}