티스토리 뷰
https://www.acmicpc.net/problem/2448
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
코드
import java.io.*;
import java.util.Arrays;
public class Main {
private static char[][] board;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int rows = Integer.parseInt(br.readLine());
board = new char[rows][rows * 2];
Arrays.stream(board).forEach(i -> Arrays.fill(i, ' '));
for (int i = 0; i < board.length; i++) board[i][board[i].length - 1] = '\n';
makeBoard(0, rows - 1, rows);
Arrays.stream(board).forEach(i -> {try{bw.write(i);} catch (IOException e) {}});
bw.flush();
}
private static void makeBoard(int x, int y, int n) {
if (n == 3) {
board[x][y] = '*';
board[x + 1][y - 1] = board[x + 1][y + 1] = '*';
board[x + 2][y - 2] = board[x + 2][y - 1] = board[x + 2][y] = board[x + 2][y + 1] = board[x + 2][y + 2] = '*';
return;
}
makeBoard(x, y, n / 2);
makeBoard(x + n / 2, y - n / 2, n / 2);
makeBoard(x + n / 2, y + n / 2, n / 2);
}
}
풀이
char로 2차원 배열 하나를 두고 공백으로 초기화 한다. 한 줄마다 맨끝(맨 오른쪽)은 개행 문자를 넣어 둔다. makeBoard 함수에서 * 이 들어갈 자리마다 넣어주고 최종적으로 배열을 출력하면 된다.
'학습 내용 > 백준 문제풀이' 카테고리의 다른 글
백준 6588 자바 - 골드바흐의 추측 (0) | 2023.02.13 |
---|---|
백준 1517 자바 - 버블 소트 (0) | 2023.01.22 |
백준 1891 자바 - 사분면 (0) | 2023.01.14 |
백준 24479 파이썬 - 깊이 우선 탐색 1 (0) | 2023.01.09 |
백준 13305 자바 - 주유소 (0) | 2023.01.06 |