26 Feb 2023

[Java] 백준 2447번: 별 찍기 - 10

2447

풀이 방법

재귀함수를 이용하는 별 찍기 문제이다.

중간을 비워두기 위해 (i/num)%3==1 && (j/num)%3==1이라면 공백을 채우고, 나머지는 별을 찍도록 했다.

System.out.println()을 사용하면 시간 초과가 나니 StringBuilder나 BufferedWriter를 사용해야 한다.

풀이 코드

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BOJ_2447_별_찍기_10 {
	static StringBuilder sb;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		sb = new StringBuilder();
		int input = Integer.parseInt(br.readLine());

		for(int i=0; i<input; i++) {
			for(int j=0; j<input; j++) {
				printStars(i, j, input);
			}
			sb.append('\n');
		}

		System.out.println(sb);
	}
	private static void printStars(int i, int j, int num) {
		if((i/num)%3==1 && (j/num)%3==1) sb.append(" ");
		else {
			if(num / 3 == 0) sb.append("*");
			else printStars(i, j, num/3);
		}
		
	}

}
Thank You For Reading
SeungJun Jeon

점점 강해지고 있습니다.

comments powered by Disqus