문제: 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]);
}
}
}
완전 고생한 문제...
'알고리즘' 카테고리의 다른 글
[백준] 2231 : 분해합 <JAVA> (0) | 2021.01.13 |
---|---|
[백준] 7568 : 덩치 <JAVA> (0) | 2021.01.12 |
[알고리즘] Brute force (브루트 포스) (0) | 2021.01.10 |
[백준] 11729 : 하노이 탑 이동 순서 <JAVA> (0) | 2021.01.08 |
[백준] JAVA : 재귀함수1 < 팩토리얼 & 피보나치> (0) | 2021.01.05 |