🐣 알고리즘 삐약/💻 백준 삐약

97 삐약 : 백준 2448 | 별 찍기 - 11 [바킹독| 재귀 |JAVA]

우주수첩 2024. 9. 15. 16:11
728x90

https://www.acmicpc.net/problem/2448

 

package BKD_0x0B_Recursion;

import java.io.*;

public class BOJ_2448 {
    static int N;
    static char[][] arr;
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        N = Integer.parseInt(br.readLine());

        arr = new char[N][2*N-1];

        stars(0,N-1,N);



        for(char[] arr_1 : arr){
            for(char val : arr_1){
                if(val!='*'){
                    bw.write(' ');
                }else{
                    bw.write(val);

                }
            }
            bw.write('\n');
        }
        bw.flush();
        bw.close();
    }

    static void stars(int x, int y,int n){
        if(n==3){
            arr[x][y] = '*';
            arr[x + 1][y - 1] = arr[x + 1][y + 1] = '*';
            arr[x + 2][y - 2] = arr[x + 2][y - 1] = arr[x + 2][y] = arr[x + 2][y + 1] = arr[x + 2][y + 2] = '*';
            return;
        }


        int nn = n/2;
        stars(x,y,nn); //상
        stars(x+nn,y-nn,nn); //좌
        stars(x+nn,y+nn,nn); //우
    }


}

 

 

기본 정보

 

  • 입력값(N) : 높이
  • 밑변 길이 : 2*N-1

 

  • 꼭짓점 좌표 : (x,y)
  • 좌측 꼭짓점 좌표 : (x+n/2,  y-n/2)
  • 우측 꼭짓점 좌표 : (x+n/2,  y+n/2)

 


 

함수 정의:

가운데가 비어있는 삼각형을 출력하는 함수

 

Base Condition : 

삼각형의 높이(n)가 3일 때

 

Recursion:

stars(x,y,n); //상
stars(x+n,y-n,n); //좌
stars(x+n,y+n,n); //우

삼각형의 가운데를 제외한 세 군대로 기준을 내려 재귀함수를 수행

 

 

 

 

 

BufferedWriter 쓰세요

알고싶지 않았어요

728x90