Algorithms/BOJ

๋ฐฑ์ค€ 2447๋ฒˆ, ๋ณ„ ์ฐ๊ธฐ - 10 : Java

suebin 2022. 12. 27. 16:42
728x90

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

๋ณ„ ์ฐ๊ธฐ - 10

 

๐Ÿ”Ž ๋ฌธ์ œ ํ’€์ด

์žฌ๊ท€ ๋ฌธ์ œ์ด๋‹ค. ์ฒ˜์Œ์— ์˜ˆ์ œ๊ฐ€ ํ•œ ๋ˆˆ์— ์ž˜ ๋“ค์–ด์˜ค์ง€ ์•Š์•„์„œ ์บก์ฒ˜ํ•ด์„œ ๊ทธ๋ฆผํŒ์œผ๋กœ ๊ทธ๋ ค๋ณด๋‹ˆ ๋ณ„์„ ์ฐ๋Š” ๋ฐฉ๋ฒ•์€ ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ”๋‹ค. ๋‹ค์Œ์€ ํฌ๊ธฐ 27์˜ ํŒจํ„ด์ด๋‹ค.

 

 

ํฌ๊ธฐ 3์˜ ํŒจํ„ด(= ๋ถ„ํ™์ƒ‰ ์ •์‚ฌ๊ฐํ˜•)์€ ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค.

ํฌ๊ธฐ 9์˜ ํŒจํ„ด(= ๋ณด๋ผ์ƒ‰ ์ •์‚ฌ๊ฐํ˜•)์€ ํฌ๊ธฐ 3์˜ ํŒจํ„ด์ด ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ์žˆ๋‹ค.

ํฌ๊ธฐ 27์˜ ํŒจํ„ด(= ๋…ธ๋ž€์ƒ‰ ์ •์‚ฌ๊ฐํ˜•)์€ ํฌ๊ธฐ 9์˜ ํŒจํ„ด์ด ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ์žˆ๋‹ค.

 

2์ฐจ์› ๋ฐฐ์—ด์„ ํ™œ์šฉํ•˜๊ณ , boolean ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ณต๋ฐฑ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ณ„ ๋˜๋Š” ๊ณต๋ฐฑ์„ ์ž๊ธฐ ์ž๋ฆฌ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๋ญ”๊ฐ€ N์„ N/3์œผ๋กœ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•ด์„œ ๋ณ„์„ ์ฐ๋Š” ๋А๋‚Œ์€ ์•Œ๊ฒ ๋Š”๋ฐ ๋ง‰์ƒ ์ฝ”๋“œ๋ฅผ ์งœ๋ ค๋‹ˆ ๋ง‰๋ง‰ํ–ˆ๋‹ค ,, ๋ณ„์„ ์ฐ๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ž…๋ ฅ๊ฐ’ N๋งŒ ๋‘๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค์ด์ž ๋ณ„์˜ ์œ„์น˜์ธ x, y์™€ ๊ณต๋ฐฑ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” boolean ๋ณ€์ˆ˜๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋‘” ๊ฒƒ์„ ๋ณด๊ณ  ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค.

 

๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ ๋ณ„์„ ์ฐ์„ ๋•Œ์—๋Š” StringBuilder๋ฅผ ํ™œ์šฉํ•ด ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ–ˆ๋‹ค. 

์ฐพ์•„๋ณด๋‹ˆ StringBuilder ๋ณด๋‹ค๋Š” BufferedWriter๊ฐ€ ์ถœ๋ ฅ์ด ๋งŽ์€ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ๋” ์ข‹์€ ํŽธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

Key Point

๐Ÿ”‘ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ๋‹ค.

 

Java ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static char[][] stars;
	static int N;
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		N = Integer.parseInt(br.readLine());
		stars = new char[N][N];
		
		drawStar(0, 0, N, false);
		
		StringBuilder result = new StringBuilder();
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				result.append(stars[i][j]);
			}
			result.append('\n');
		}
		
		System.out.println(result);
		
	}
	
	public static void drawStar(int x, int y, int N, boolean blank) {
		
		if (blank) { // ๊ณต๋ฐฑ์ธ ๊ฒฝ์šฐ
			for (int i = x; i < x+N; i++) {
				for (int j = y; j < y+N; j++) {
					stars[i][j] = ' ';
				}
			}
			return;
		}
		
		if (N == 1) { // ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
			stars[x][y] = '*';
			return;
		}
		
		int size = N / 3;
		int count = 0;
		
		for (int i = x; i < x+N; i += size) {
			for (int j = y; j < y+N; j += size) {
				count++;
				if (count == 5) drawStar(i, j, size, true);
				else drawStar(i, j, size, false);
			}
		}
	
	}
}
728x90