[Boj_2447] ๋ณ„ ์ฐ๊ธฐ - 10

๐Ÿ“Ž ๋ฌธ์ œ ๋งํฌ

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

 

2447๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 10

์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž. N์ด 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ  ํ•  ๋•Œ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ N×N ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค. ํฌ๊ธฐ 3์˜ ํŒจํ„ด์€ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๊ณ , ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด

www.acmicpc.net

 

โ–ธ ๋ฌธ์ œ

์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž. N์ด 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ  ํ•  ๋•Œ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ N×N ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค.

ํฌ๊ธฐ 3์˜ ํŒจํ„ด์€ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๊ณ , ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด ํ•˜๋‚˜์”ฉ ์žˆ๋Š” ํŒจํ„ด์ด๋‹ค.

 

***

*  *

***

 

N์ด 3๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์›Œ์ง„ ๊ฐ€์šด๋ฐ์˜ (N/3)×(N/3) ์ •์‚ฌ๊ฐํ˜•์„ ํฌ๊ธฐ N/3์˜ ํŒจํ„ด์œผ๋กœ ๋‘˜๋Ÿฌ์‹ผ ํ˜•ํƒœ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๊ธฐ 27์˜ ํŒจํ„ด์€ ์˜ˆ์ œ ์ถœ๋ ฅ 1๊ณผ ๊ฐ™๋‹ค.

 

โ–ธ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด๋‹ค. ์ฆ‰ ์–ด๋–ค ์ •์ˆ˜ k์— ๋Œ€ํ•ด N=3k์ด๋ฉฐ, ์ด๋•Œ 1 ≤ k < 8์ด๋‹ค.

 

โ–ธ ์ถœ๋ ฅ

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ N๋ฒˆ์งธ ์ค„๊นŒ์ง€ ๋ณ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด

  • ๐Ÿฅ‡ ๋ฌธ์ œ ๋ ˆ๋ฒจ : ๊ณจ๋“œ 5
  • ๐Ÿ””  ๋ฌธ์ œ ์œ ํ˜• : ๋ถ„ํ•  ์ •๋ณต, ์žฌ๊ท€
  • ๐Ÿ’ฌ  ํ’€์ด ์–ธ์–ด : JAVA

 

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

๋จผ์ € ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์˜ ์ˆ˜์ด๊ณ ,

n = 3์ผ ๋•Œ์˜ ๋ชจ์–‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

* * *
*   *
* * *

์ด ๋ชจ์–‘์€ *์„ ์—ฐ์†์ ์œผ๋กœ ์ฑ„์šฐ๋ฉด์„œ ์ง„ํ–‰๋˜๋Š”๋ฐ

์ด๋•Œ, ํ•œ ๋ธ”๋ก์˜ ๊ฐ€์šด๋ฐ๋Š” ์ฑ„์›Œ์ง€์ง€ ์•Š๋Š”๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ๋ณด์ž๋ฉด

n = 3์ผ ๋•Œ, 

* * *
*   *
* * *

 

n = 9 ์ผ ๋•Œ, 

* * * * * * * * *
*   * *   * *   *
* * * * * * * * *
* * *       * * *
*   *       *   *
* * *       * * *
* * * * * * * * *
*   * *   * *   *
* * * * * * * * *

 

n = 27 ์ผ ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

์ฆ‰, n์ด 3์˜ ์ œ๊ณฑ์ˆ˜์ผ ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋•Œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™์€ ํ•œ ๋ธ”๋ก์—์„œ ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์€ ๊ณต๋ฐฑ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

 

n = 3์ผ ๋•Œ 2์ฐจ์› ๋ฐฐ์—ด์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด, ๊ณต๋ฐฑ์€ (1, 1)์ด๋‹ค.

์ฆ‰, ํ–‰์„ ์ฑ„์šธ ๋•Œ, (0, 0), (0, 1), (0, 2), (1, 0)๊นŒ์ง€๋Š” ๋ณ„์„ ์ถœ๋ ฅํ•˜๊ณ 

๋ณ„ ์ถœ๋ ฅ์ด 4๋ฒˆ ์ด๋ฃจ์–ด์ง€๋ฉด ๊ทธ๋‹ค์Œ ๋ธ”๋ก์€ ๋ฐ˜๋“œ์‹œ ๊ณต๋ฐฑ์ด๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, n = 9๋ผ๋ฉด n = 3์ผ ๋•Œ์˜ ๋ชจ์–‘์ด ํ•œ ๋ธ”๋ก์ด ๋˜์–ด ๋ฐ˜๋ณต๋œ๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž๋ฉด

๋จผ์ €, n = 27์ผ ๋•Œ, 9๊ฐœ์˜ ๋ธ”๋ก์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ๊ณต๋ฐฑ์ธ ๊ตฌ๊ฐ„์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ๊ทธ ๊ตฌ๊ฐ„์€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์šฐ๊ณ , ๊ณต๋ฐฑ์ด ์•„๋‹Œ ๊ตฌ๊ฐ„์€ ์žฌ๊ท€ํ˜ธ์ถœ์„ ํ•œ๋‹ค.

 

n = 9๋กœ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ์ด ์ „๊ณผ ๊ฐ™์ด ๋‹ค์‹œ 9๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๋‚˜๋‰œ ๋’ค,

๊ณต๋ฐฑ ๊ตฌ๊ฐ„์€ ๊ณต๋ฐฑ์œผ๋กœ ์ฑ„์šฐ๊ณ , ์•„๋‹Œ ๊ตฌ๊ฐ„์€ ๋‹ค์‹œ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ํ•œ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด n = 3์ผ ๋•Œ๋กœ ๊ฐˆ ๊ฒƒ์ด๊ณ ,

์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ณด๋ฉด n = 1์ผ ๋•Œ๊ฐ€ ์˜จ๋‹ค.

์—ฌ๊ธฐ์„œ ๋” ์ชผ๊ฐœ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ตฌ์—ญ์˜ ๋ฐฐ์—ด์„ ๊ณต๋ฐฑ ๋˜๋Š” ๋ณ„๋กœ ์ฑ„์šฐ๋ฉด ๋œ๋‹ค.

 

์ฆ‰, ๊ฐ ๋‹จ๊ณ„์—์„œ 9๊ฐœ์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ๋ถ„ํ•œ ๋’ค, ์ขŒํ‘œ์— ๋”ฐ๋ผ ๊ณต๋ฐฑ ๋˜๋Š” ์žฌ๊ท€ ํ˜ธ์ถœ์„ ๋ฐ˜๋ณตํ•ด ์ฃผ๋ฉฐ ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์นธ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทœ์น™ ์ฐพ๊ธฐ๋ถ€ํ„ฐ ๊ตฌํ˜„๊นŒ์ง€ ๊ต‰์žฅํžˆ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ์˜€๋‹ค ๐Ÿ˜ญ๐Ÿ˜‚

 

โœ” ์ตœ์ข… ์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ : 22428KB
์‹œ๊ฐ„ : 216ms
import java.io.*;

public class Main {
    static int n;
    static char[][] arr;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        n = Integer.parseInt(br.readLine()); // 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ, nxn
        arr = new char[n][n]; // ๋ณ„์„ ๊ทธ๋ฆด ์ด์ฐจ์› ๋ฐฐ์—ด
        partition(0, 0, n, false); // ์‹œ์ž‘์ , ๊ณต๋ฐฑ์นธ ์—ฌ๋ถ€
        // ์ถœ๋ ฅ
        for (char[] line : arr) {
            bw.write(line);
            bw.write("\n");
        }
        bw.flush();
        bw.close();
        br.close();
    }

    private static void partition(int x, int y, int size, boolean blank) {
        if (blank) { // ๊ณต๋ฐฑ ์นธ์ด๋ผ๋ฉด
            for (int i = x; i < x+size; i++) {
                for (int j = y; j < y+size; j++) {
                    arr[i][j] = ' ';
                }
            }
            return;
        }

        // ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†์„๋•Œ
        if (size == 1) {
            arr[x][y] = '*';
            return;
        }

        int newSize = size/3; // ํ•œ ๋ธ”๋ก์˜ ์‚ฌ์ด์ฆˆ
        int cnt = 0;
        for (int i = x; i < x+size; i+=newSize) {
            for (int j = y; j < y+size; j+=newSize) {
                cnt++;
                // ๊ณต๋ฐฑ ์นธ์ผ ๊ฒฝ์šฐ
                if (cnt == 5) partition(i, j, newSize, true);
                else partition(i, j, newSize, false);
            }
        }
    }
}


 

 

๐Ÿ“ ํ•จ๊ป˜ ํ’€์–ด๋ณด๋ฉด ์ข‹์€ ๋ฐฑ์ค€ ๋ฌธ์ œ

 

 

๐Ÿ“ƒ reference

'Algorithm > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Boj_2252] ์ค„ ์„ธ์šฐ๊ธฐ  (1) 2024.01.11
[Boj_21921] ๋ธ”๋กœ๊ทธ  (1) 2023.12.04
[Boj_1074] Z  (1) 2023.11.28
[Boj_1992] ์ฟผ๋“œํŠธ๋ฆฌ  (1) 2023.11.28
[Boj_2630] ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ  (0) 2023.11.24