코테/백준

[백준/JAVA] 4779번: 칸토어 집합

imname1am 2023. 3. 23. 14:53
반응형

🔺 문제

 

4779번: 칸토어 집합

칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고,

www.acmicpc.net

 

🔺 코드

import java.util.*;
import java.io.*;

public class Main {
    static int n;
    static StringBuilder sb;
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str;
		
        while((str = br.readLine()) != null) {
            n = Integer.parseInt(str);
            int len = (int)Math.pow(3, n);
		    
            sb = new StringBuilder();
            for(int i=0 ; i < len ; i++) {
                sb.append("-");
            }
    		
            func(0, len);   // 시작 인덱스, 시작 길이
            System.out.println(sb);
        }
    }
	
    public static void func(int start, int size) {
        // 최소 단위
        if(size == 1) {
            return;
        }
        
        int newSize = size / 3;
        
        for(int i = start + newSize ; i < start + 2 * newSize ; i++) {
            sb.setCharAt(i, ' ');
        }
        
        func(start, newSize);
        func(start + 2 * newSize, newSize);
    }
}
✅ 해결 아이디어
- 분할 정복 → 재귀 함수
- 최소 단위!
- 덩이 나누기 & func함수 안에서의 for문 범위

어렵구나..

 


(참고)

- 풀이

 

[백준/java] 4779. 칸토어 집합

문제 링크 - https://www.acmicpc.net/problem/4779🌱 코드

velog.io

 

반응형