알고리즘
[백준] 2447 : 별 찍기 <JAVA>
HBean_
2021. 1. 8. 15:58
문제: 3의 배수인 N을 입력받을 경우, N/3 * N/3 크기의 사각형을 N/3 의 결과값으로 둘러싼 사각형 출력하기
예시
<main 함수>
1. 3의 배수 N을 입력받아 2차원 배열의 크기 설정
2. 2차원 배열을 공백으로 초기화
3. 재귀함수 star로 배열에 * 채우기
4. 2차원 배열 출력
<star 함수>
- 파라미터 : x,y 어레이 시작점, n 어레이 사이즈 (가로, 세로 길이)
1. N==1 이면 arr[x][y]에 * 찍기
2. 아닐 경우 해당 크기의 배열을 9등분하여 시작점(제일 왼쪽 위 위치) 기준으로 N/3으로 재귀함수 콜
3. 만약 9등분 배열에서 중앙 배열일 경우 재귀함수 callX
import java.util.*;
public class Main {
static char arr[][]; //n크기만큼 2차원 배열을 생성
public static void star(int x,int y,int n) { //x,y: 시작 포인트 위치
if(n==1){
arr[x][y]= '*';
}else{
int div = n/3;
for(int fx =0;fx<3;fx++){
for(int fy=0;fy<3;fy++){
if(fx==1 && fy==1)
continue;
star(x+(div*fx),y+(div*fy),div);
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();
arr = new char[n][n];
//2차원 배열 공백으로 채우기
for(int i=0;i<arr.length;i++) {
Arrays.fill(arr[i],' ');
}
//재귀함수 call
star(0,0,n);
//출력
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
완전 고생한 문제...