코테/백준
[백준/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
반응형