1) ๋ฌธ์ ์ค๋ช
- ์์ ์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
- n × n ๋ฐฐ์ด์ 1๋ถํฐ n2 ๊น์ง ์ ์๋ฅผ ์ธ๋ฑ์ค [0][0]๋ถํฐ ์๊ณ๋ฐฉํฅ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ ์ด์ฐจ์ ๋ฐฐ์ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
2) ์ ํ์ฌํญ
- 1 ≤ n ≤ 30
3) ์ ์ถ๋ ฅ ์์
n result
4 [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]
5 [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]
4) ์ ์ถ๋ ฅ ์์ ์ค๋ช
# ์์ 1๋ฒ
- ์์ 1๋ฒ์ n์ ๊ฐ์ 4๋ก 4 × 4 ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด 1๋ถํฐ 16๊น์ง ์ซ์๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค.
0 1 2 3 4
1 12 13 14 5
2 11 16 15 6
3 10 9 8 7
๋ฐ๋ผ์ [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]๋ฅผ return ํฉ๋๋ค.
# ์์ 2๋ฒ
- ์์ 2๋ฒ์ n์ ๊ฐ์ 5๋ก 5 × 5 ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด 1๋ถํฐ 25๊น์ง ์ซ์๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค.
0 1 2 3 4 5
1 16 17 18 19 6
2 15 24 25 20 7
3 14 23 22 21 8
4 13 12 11 10 9
๋ฐ๋ผ์ [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]]๋ฅผ return ํฉ๋๋ค.
5) ํ์ด
def solution(n):
# ์ขํ ๋ฐ ๋ฐฉํฅ ์ ๋ณด
x_idx, y_idx = 0, 0
direction = "right"
# ๋ฐฐ์ด ์ด๊ธฐํ (0์ผ๋ก)
L = [[0 for _ in range(n)] for __ in range(n)]
# n x n ๋ฐ๋ณต
for num in range(1, n * n + 1):
# ๊ฐ ๋์
L[x_idx][y_idx] = num
# ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์ธ ๊ฒฝ์ฐ
if direction == "right":
# ํด๋น ์กฐ๊ฑด ๋ง์กฑ ์ ๋ฐฉํฅ ์ ํ, ์๋๋ฉด ์ธ๋ฑ์ค ์ฆ๊ฐ
if y_idx + 1 == n or L[x_idx][y_idx + 1] != 0:
direction = "down"
x_idx += 1
else:
y_idx += 1
# ๋ฐฉํฅ์ด ์๋์ชฝ์ธ ๊ฒฝ์ฐ
elif direction == "down":
# ํด๋น ์กฐ๊ฑด ๋ง์กฑ ์ ๋ฐฉํฅ ์ ํ, ์๋๋ฉด ์ธ๋ฑ์ค ์ฆ๊ฐ
if x_idx + 1 == n or L[x_idx + 1][y_idx] != 0:
direction = "left"
y_idx -= 1
else:
x_idx += 1
# ๋ฐฉํฅ์ด ์ผ์ชฝ์ธ ๊ฒฝ์ฐ
elif direction == "left":
# ํด๋น ์กฐ๊ฑด ๋ง์กฑ ์ ๋ฐฉํฅ ์ ํ, ์๋๋ฉด ์ธ๋ฑ์ค ์ฆ๊ฐ
if L[x_idx][y_idx - 1] != 0:
direction = "top"
x_idx -= 1
else:
y_idx -= 1
# ๋ฐฉํฅ์ด ์์ชฝ์ธ ๊ฒฝ์ฐ
elif direction == "top":
# ํด๋น ์กฐ๊ฑด ๋ง์กฑ ์ ๋ฐฉํฅ ์ ํ, ์๋๋ฉด ์ธ๋ฑ์ค ์ฆ๊ฐ
if L[x_idx - 1][y_idx] != 0:
direction = "right"
y_idx += 1
else:
x_idx -= 1
return L
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ
'๐ฏ Coding Test > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ธฐ๋ฅ๊ฐ๋ฐ (1) | 2023.08.17 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ํ๋ก์ธ์ค (1) | 2023.08.16 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 0) - ์น์์ด (1) (1) | 2023.08.16 |
๋ฐฑ์ค 2178๋ฒ - ๋ฏธ๋ก ํ์ (1) | 2023.08.14 |
๋ฐฑ์ค 1260๋ฒ - DFS์ BFS (1) | 2023.08.14 |