반응형
🔺 문제
🔺 코드
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] 5086번: 배수와 약수 (0) | 2023.03.27 |
---|---|
[백준/JAVA] 11729번: 하노이 탑 이동 순서 (0) | 2023.03.23 |
[백준/JAVA] 24060번: 알고리즘 수업 - 병합 정렬 1 (0) | 2023.03.23 |
[백준/JAVA] 18870번: 좌표 압축 (0) | 2023.03.22 |
[백준/JAVA] 10814번: 나이순 정렬 (0) | 2023.03.22 |