๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java-๊ธฐ์ดˆ] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹ค์Šต (๋งˆ๋ฐฉ์ง„)

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 24.
๋ฐ˜์‘ํ˜•

*๋งˆ๋ฐฉ์ง„์ด๋ž€ ?

๋งˆ๋ฐฉ์ง„์€ ‘1๋ถ€ํ„ฐ n์ œ๊ณฑ’๊นŒ์ง€์˜ ์—ฐ์†๋œ ์ž์—ฐ์ˆ˜๋ฅผ ๊ฐ€๋กœ, ์„ธ๋กœ, ๋Œ€๊ฐ์„ ์˜ ํ•ฉ์ด ๊ฐ™์•„์ง€๋„๋ก ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์œผ๋กœ ๋ฐฐ์—ดํ•œ ๊ฒƒ.

๋Œ€์ถฉ ์ด๋Ÿฐ๊ฑฐ

 

โ€‹

โ€‹

์‹ค์Šต ) ๋ฐ‘์˜ ๊ฒฐ๊ณผ์™€ ๊ฐ™์ด ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“œ์‹œ์˜ค.

์กฐ๊ฑด : ๋ฒ„ํผ๋ฆฌ๋”, ๋งˆ๋ฐฉ์ง„

 

์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“ค๊ธฐ

 

๋งˆ๋ฐฉ์ง„ ์ˆœ์„œ๋„

โ€‹

โ€‹

<๋‚ด๊ฐ€ ํ•œ ๊ฒƒ> ์™„์„ฑ๋ชปํ•จ..

โ€‹

1. ์ˆœ์„œ๋„ ๋ณด๋ฉด์„œ ํ• ๋ผ๋‹ˆ๊นŒ ๋ปํ‚นํ–ˆ๋‹ค. (์ˆœ์„œ๋„ ๋ณด๋Š”๋ฒ• ์•ˆ๊ฐ€๋ฅด์ณ์คŒ)

๊ทธ๋ž˜๋„ ์„ ์ƒ๋‹˜๊ป˜์„œ ์น ํŒ์—๋‹ค ๋Œ€์ถฉ ์–ด๋–ค ์‹์œผ๋กœ ํ•ด์•ผํ•˜๋Š”์ง€ ํฐ ํ‹€์„ ์ ์–ด์ฃผ์‹ฌ.

        int N = 0; // ๋ฐฐ์—ด ๊ฐ’
		int k = 0; // ๋งˆ๋ฐฉ์ง„ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆซ์ž
        int[][] arr = new int[N][N]; // ๋ฐฐ์—ด
		int i = 1; // ํ–‰
        int j = (N / 2) + 1; // ์—ด

        // ๋ฐฐ์—ด ์ž…๋ ฅ ๋ถ€๋ถ„
        System.out.println("๋งˆ๋ฐฉ์ง„์„ ๊ตฌํ•  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” : ");
        N = Integer.parseInt(inbr.readLine());

        // ๋งˆ๋ฐฉ์ง„ ๊ณ„์‚ฐ
        for(k = 1; k <= N * N; k++) {
			arr[i][j] = k;

			if (k % N == 0) { // k๊ฐ€ N์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ
				i = i + 1;    // N์˜ ๋ฐฐ์ˆ˜์ด๋ฉด ํ–‰์„ 1 ์ฆ๊ฐ€
			} else {
				i = i - 1;    // ํ–‰ ๊ฐ์†Œ
				j = j + 1;    // ์—ด ์ฆ๊ฐ€

				if (i < 0) // ํ–‰์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด
					i = N - 1; // ๋ฐฐ์—ด ํฌ๊ธฐ์—์„œ 1์„ ๋บ€๋‹ค
				if (j == N) // ํ–‰์ด ๋ฐฐ์—ด ํฌ๊ธฐ์™€ ๊ฐ™๋‹ค๋ฉด
					j = 0; // ํ–‰์€ 0
			}
		}

        // ๋งˆ๋ฐฉ์ง„ ์ถœ๋ ฅ
        for(i = 1; i < arr.length; i++) {
           for(j = 1; j < arr[i].length; j++) {
              System.out.print(arr[i][j] + "\t");
           System.out.println();
		   }
	    }

โ€‹<๊ฒฐ๊ณผ๊ฐ’>

โ€‹

โ€‹

2. ์‹์˜ ์œ„์น˜๋ฅผ ์˜ฎ๊น€

        int N = 0; // ๋ฐฐ์—ด ๊ฐ’
		int k = 0; // ๋งˆ๋ฐฉ์ง„ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆซ์ž
		int i = 1; // ํ–‰
     
        // ๋ฐฐ์—ด ์ž…๋ ฅ ๋ถ€๋ถ„
        System.out.println("๋งˆ๋ฐฉ์ง„์„ ๊ตฌํ•  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” : ");
        N = Integer.parseInt(inbr.readLine());
        int[][] arr = new int[N][N]; // ๋ฐฐ์—ด
        int j = (N / 2) + 1; // ์—ด

        // ๋งˆ๋ฐฉ์ง„ ๊ณ„์‚ฐ
        for(k = 1; k <= N * N; k++) {
			arr[i][j] = k;

			if (k % N == 0) { // k๊ฐ€ N์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌ
				i = i + 1;    // N์˜ ๋ฐฐ์ˆ˜์ด๋ฉด ํ–‰์„ 1 ์ฆ๊ฐ€
			} else {
				i = i - 1;    // ํ–‰ ๊ฐ์†Œ
				j = j + 1;    // ์—ด ์ฆ๊ฐ€

				if (i < 0) // ํ–‰์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด
					i = N - 1; // ๋ฐฐ์—ด ํฌ๊ธฐ์—์„œ 1์„ ๋บ€๋‹ค
				if (j == N) // ํ–‰์ด ๋ฐฐ์—ด ํฌ๊ธฐ์™€ ๊ฐ™๋‹ค๋ฉด
					j = 0; // ํ–‰์€ 0
			}
		}

        // ๋งˆ๋ฐฉ์ง„ ์ถœ๋ ฅ
        for(i = 1; i < arr.length; i++) {
           for(j = 1; j < arr[i].length; j++) {
              System.out.print(arr[i][j] + "\t");
           System.out.println();
		   }
	    }

โ€‹

 

3. ๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์œ„ํ•ด 22๋ฒˆ์งธ ์ค„ ๋ฐ‘์—๋‹ค๊ฐ€

์ด๊ฑฐ๋ฅผ ์ž…๋ ฅํ•ด์„œ ์›์ธ ํŒŒ์•…

.....

-ํฌ๊ธฐ-

 

๋”๋ณด๊ธฐ

<์„ ์ƒ๋‹˜์ด ํ•œ ๊ฒƒ>

MaBangJin.java

package algorithm;

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

public class MaBangJin {
	public int[][] mabangjin(int size) {
		int[][] arr = new int[size][size];

		int N = 1; // ์ž…๋ ฅ๋˜๋Š” ๊ฐ’
		int i = 0; // ๋ฐฐ์—ด์˜ ํ–‰ ์œ„์น˜
		int j = size / 2; // ๋ฐฐ์—ด์˜ ์—ด ์œ„์น˜
		while (N <= size * size) {
			arr[i][j] = N;

			if (N % size == 0) { // ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋ฐฐ์—ด ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜์ธ์ง€ ํ™•์ธ
				i = i + 1;
			} else {
				i = i - 1;
				j = j + 1;
				if (i < 0) // ํ–‰์˜ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๊ฐ€ 0๋ณด๋‹ค ์ž‘์•„์ง
					i = size - 1; // ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋กœ ์ ค ํฐ ์ธ๋ฑ์Šค๋ฅผ ํ• ๋‹น
				if (j == size) // ์—ด์˜ ๋ฑ…๋ ค ์ธ๋ฑ์Šค๊ฐ€ (๋ฐฐ์—ด.length -1)๋ณด๋‹ค ์ปค์ง
					j = 0; // ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋กœ ์ ค ์ž‘์€ ์ธ๋ฑ์Šค ํ• ๋‹น
			}
			N++;
		}
		return arr;
	}
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader inbr = new BufferedReader(new InputStreamReader(System.in));
		int arr[][];
		System.out.print("๋งˆ๋ฐฉ์ง„์„ ๊ตฌํ•  ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” : ");
		int size = Integer.parseInt(inbr.readLine());

		MaBangJin m = new MaBangJin();
		arr = m.mabangjin(size);

		m.display(arr);
	}

	private void display(int[][] arr) {
		for (int n = 0; n < arr.length; n++) {
			for (int m = 0; m < arr.length; m++) {
				System.out.print(arr[n][m] + "\t");
			}
			System.out.println();
		}
	}
}

- ์„ ์ƒ๋‹˜์ด ํ™€์ˆ˜ ๋งˆ๋ฐฉ์ง„๊ณผ ์ง์ˆ˜ ๋งˆ๋ฐฉ์ง„์˜ ์‹์ด ๋‹ค๋ฅด๋‹ค๋Š”๊ฑธ ๋ง์”€ ์•ˆํ•ด์ฃผ์‹ฌ. ์ฉ

- ๋งˆ๋ฐฉ์ง„ ์ˆœ์„œ๋„๋ฅผ ๋ณด๋ฉด์„œ ํ–ˆ๋Š”๋ฐ ๊ทธ ์ˆœ์„œ๋„์—” ๋ฐฐ์—ด์ด '0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฐฐ์—ดํฌ๊ธฐ-1๊นŒ์ง€' ๋ผ๋Š” ์กฐ๊ฑด์ด ๋“ค์–ด๊ฐ€์ง€์•Š์Œ.

๊ทธ๊ฑธ ๊ฐ์•ˆํ•˜๊ณ  ์‹์„ ์จ์•ผํ•ด์„œ ํž˜๋“ค์—ˆ๋‹ค... ๋‚œ ์•„์ง ์ฝ”๋”ฉ ์–ด๋ฆฐ์ด์ธ๋ฐ...

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€