https://www.acmicpc.net/problem/2447
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.regex.Pattern;
public class Main {
static char[][] grid;
static void makePattern(int x, int y, int N, boolean isBlank) {
if (isBlank) {
for (int i = x; i < x + N; i++) {
for (int j = y; j < y + N; j++) {
grid[i][j] = ' ';
}
}
return;
}
if (N == 1) {
grid[x][y] = '*';
return;
}
int size = N / 3;
int count = 0;
for (int i = x; i < x+N; i += size) {
for (int j = y; j < y+N; j += size) {
count++;
if (count == 5) {
makePattern(i, j, size, true);
} else {
makePattern(i, j, size, false);
}
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
grid = new char[N][N];
makePattern(0,0, N,false);
StringBuilder sb = new StringBuilder();
for (char[] eachLine : grid) {
for (char each : eachLine) {
sb.append(each);
}
sb.append("\n");
}
System.out.print(sb);
}
//혼자 막 짠 코드
// public static char[][] makePattern(int N, char[][] grid){
// for(int i=0; i<N; i++){
// Arrays.fill(grid[i], '*');
// }
//
// return drill(N, grid);
// }
// public static char[][] drill(int N, char[][] grid) {
//
//
// for(int i=0; i<grid.length; i++){
// for(int j=0; j< grid.length; j++){
// if(i/(N/3)%3 == 1 && j/(N/3)%3 ==1){
// grid[i][j] = ' ';
// }
// }
// }
// if(N == 3) return grid;
//
// return drill(N/3, grid);
// }
}
재귀가 계속 헷갈린다. 갈길이 멀다.
백준 단계별 문제를 검색하면 바로나오는 st-lab님의 힘을 빌렸다. 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 2798번 - 블랙잭 (Java 8) (0) | 2022.02.28 |
---|---|
백준 11729번 - 하노이 탑(Java 8) (0) | 2022.02.27 |
백준 10870번 - 피보나치 수 5 (Java 8) (0) | 2022.02.26 |
백준 10872번 - 팩토리얼 (Java 8) (0) | 2022.02.26 |
백준 1002번 - 터렛 (Java 8) (0) | 2022.02.25 |
댓글