반응형

 

 

<코드>

import java.util.*;
public class Main {
	
	static StringBuffer sb = new StringBuffer();
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				f(i,j);
			}
			sb.append("\n");
		}
		System.out.println(sb.toString());
	}
	
	public static void f(int x, int y) {
		
		if(x < 3 && y < 3) {
			if(x % 3 == 1 && y % 3 == 1) {
				sb.append(" ");
			}
			else {
				sb.append("*");
			}
		} else {
			if(x % 3 == 1 && y % 3 == 1) {
				sb.append(" ");
			}
			else {
				f(x/3,y/3);
			}
		}
	}
}

 

두 좌표를 계속 3으로 나눠주면서(/) 두 좌표가 모두 3으로 나눴을 때(%) 나머지가 1이라면 공백을 출력하고 그게 아니라면 "*"를 출력하도록 하였습니다.  

System.out.print로 출력 시 시간 초과가 발생해서 StringBuffer를 통해 출력을 하였습니다.

 

 

 

 

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

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

 

반응형

+ Recent posts