자바 백준 2448번
골드 4
https://www.acmicpc.net/problem/2448
문제 보기

분류: 재귀
코드 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static char[][] map; // 별을 저장할 2차원 문자 배열 public static void main(String[] args) throws IOException { // 입력을 받기 위한 BufferedReader 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 첫 줄에 입력된 N을 정수로 변환하여 저장 int N = Integer.parseInt(br.readLine()); // N x (2*N - 1) 크기의 2차원 배열을 생성 map = new char[N][2 * N - 1]; // 배열을 공백 문자로 초기화 for (int i = 0; i < N; i++) { for (int j = 0; j < 2 * N - 1; j++) { map[i][j] = ' '; // 모든 위치에 공백 문자를 채움 } } // 첫 번째 별 패턴을 그리기 위한 재귀 함수 호출 drawStars(0, N - 1, N); // 출력 결과를 저장할 StringBuilder 생성 StringBuilder sb = new StringBuilder(); for (char[] line : map) { sb.append(line).append('\n'); // 각 줄을 StringBuilder에 추가 } // 최종 결과 출력 System.out.print(sb); } // 별을 그리는 재귀 함수 private static void drawStars(int x, int y, int n) { if (n == 3) { // 기본 패턴인 높이 3의 삼각형을 그림 map[x][y] = '*'; // 첫 번째 줄의 중앙 map[x + 1][y - 1] = '*'; // 두 번째 줄의 왼쪽 map[x + 1][y + 1] = '*'; // 두 번째 줄의 오른쪽 map[x + 2][y - 2] = '*'; // 세 번째 줄의 가장 왼쪽 map[x + 2][y - 1] = '*'; // 세 번째 줄의 왼쪽 두 번째 map[x + 2][y] = '*'; // 세 번째 줄의 중앙 map[x + 2][y + 1] = '*'; // 세 번째 줄의 오른쪽 두 번째 map[x + 2][y + 2] = '*'; // 세 번째 줄의 가장 오른쪽 } else { int m = n / 2; // 현재 삼각형을 반으로 나눈 크기 drawStars(x, y, m); // 위쪽 중앙 삼각형 drawStars(x + m, y - m, m); // 왼쪽 아래 삼각형 drawStars(x + m, y + m, m); // 오른쪽 아래 삼각형 } } } /* 예제 입력 1 24 예제 출력 1 * * * ***** * * * * * * ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** ***** ***** ***** */
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 2920 - 음계 (0) | 2024.07.16 |
---|---|
[Java] 백준 풀기 10250 - ACM 호텔 (0) | 2024.07.14 |
[Java] 백준 풀기 1049 - 기타줄 (0) | 2024.06.23 |
[Java] 백준 풀기 12865 - 평범한 배낭 (0) | 2024.06.06 |
[Java] 백준 풀기 2644 - 촌수계산 (0) | 2024.05.19 |