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

๋ฌธ์ œ ํ’€์ด

์ •์ˆ˜๋ฅผ ๋‚˜์„ ํ˜•์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ - Programmers

๐Ÿ”Ž ๋ฌธ์ œ ์„ค๋ช…

์–‘์˜ ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
1๋ถ€ํ„ฐ n^2๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์‹œ๊ณ„๋ฐฉํ–ฅ ๋‚˜์„ ํ˜•์œผ๋กœ n x n ๋ฐฐ์—ด์— ์ฑ„์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด n = 4๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฑ„์›Œ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค:

[ [ 1, 2, 3, 4], [16, 17, 18, 5], [15, 24, 19, 6], [14, 13, 12, 7] ]

๐Ÿ’ก ๋จผ์ € ์ง์ ‘ ์จ๋ณด์•˜์Šต๋‹ˆ๋‹ค

๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋ดค์„ ๋• ์กฐ๊ธˆ ๋ง‰๋ง‰ํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ์†์œผ๋กœ ๋ฐฐ์—ด์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์ธ๋ฑ์Šค๋ฅผ ๊ทธ๋ ค๋ณด์•˜์Šต๋‹ˆ๋‹ค.

00 -> 01 -> 02 -> 03 ↓ 13 -> 23 -> 33 ↓ ↑ 32 -> 31 -> 30 ↓ 20 -> 10 → ↓ 11 -> 12 -> 22 -> 21

์œ„์ฒ˜๋Ÿผ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ฉด์„œ ํ•œ ์นธ์”ฉ ์ˆซ์ž๋ฅผ ์ฑ„์šฐ๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
์ค‘๋ณตํ•ด์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋„๋ก ๊ฒฝ๊ณ„๋ฅผ ์ ์  ์ค„์—ฌ๊ฐ€๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿง  ๋ฌธ์ œ ํ•ด๊ฒฐ ์ „๋žต

  • ์ƒ๋‹จ(top), ํ•˜๋‹จ(bottom), ์ขŒ์ธก(left), ์šฐ์ธก(right) ๋„ค ๊ฐœ์˜ ๊ฒฝ๊ณ„๊ฐ’์„ ์„ ์–ธ
  • ํ˜„์žฌ ์œ„์น˜์—์„œ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ์ˆœ์„œ๋Œ€๋กœ ์ด๋™:
    1. โžก๏ธ ์™ผ → ์˜ค (์ƒ๋‹จ)
    2. โฌ‡๏ธ ์œ„ → ์•„๋ž˜ (์šฐ์ธก)
    3. โฌ…๏ธ ์˜ค → ์™ผ (ํ•˜๋‹จ)
    4. โฌ†๏ธ ์•„๋ž˜ → ์œ„ (์ขŒ์ธก)
  • ํ•œ ๋ฐฉํ–ฅ์„ ๋Œ ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฐฉํ–ฅ์˜ ๊ฒฝ๊ณ„๋ฅผ ์ขํ˜€ ๋‚˜๊ฐ

โœ… Java ์ฝ”๋“œ ๊ตฌํ˜„

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];

        int num = 1;
        int top = 0, bottom = n - 1, left = 0, right = n - 1;

        while (num <= n * n) {
            // โžก๏ธ ์˜ค๋ฅธ์ชฝ
            for (int i = left; i <= right; i++) {
                answer[top][i] = num++;
            }
            top++;

            // โฌ‡๏ธ ์•„๋ž˜
            for (int i = top; i <= bottom; i++) {
                answer[i][right] = num++;
            }
            right--;

            // โฌ…๏ธ ์™ผ์ชฝ
            for (int i = right; i >= left; i--) {
                answer[bottom][i] = num++;
            }
            bottom--;

            // โฌ†๏ธ ์œ„
            for (int i = bottom; i >= top; i--) {
                answer[i][left] = num++;
            }
            left++;
        }

        return answer;
    }
}

โœจ n = 4์ผ ๋•Œ ๊ฒฐ๊ณผ ์ถœ๋ ฅ

์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค:

1 2 3 4 16 17 18 5 15 24 19 6 14 13 12 7

์ •ํ™•ํžˆ ๋‚ด๊ฐ€ ๋ฉ”๋ชจ์žฅ์— ์ ์—ˆ๋˜ ์ˆœ์„œ๋Œ€๋กœ ์ˆซ์ž๊ฐ€ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์†์œผ๋กœ ์ง์ ‘ ์จ๋ณด๋ฉด์„œ ์ธ๋ฑ์Šค ์ˆœ์„œ๋ฅผ ํŒŒ์•…ํ•œ ๊ฒƒ์ด ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


โœ… ๋งˆ๋ฌด๋ฆฌ & ๋А๋‚€ ์ 

  • ๋‚˜์„ ํ˜• ๋ฌธ์ œ๋Š” ๊ฒฝ๊ณ„๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋ฉด ์ง๊ด€์ ์ด๊ณ  ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ์†์œผ๋กœ ํ’€์–ด๋ณด๋ฉฐ ์ธ๋ฑ์Šค๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ์Šต๊ด€์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์ดํ›„ ์ŠคํŒŒ์ด๋Ÿด ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ๋„ ์ด ๋กœ์ง์„ ์‘์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.