https://school.programmers.co.kr/learn/courses/30/lessons/181832
๋ฌธ์
๋ฌธ์ ์ค๋ช
์์ ์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. n × n ๋ฐฐ์ด์ 1๋ถํฐ n^2๊น์ง ์ ์๋ฅผ ์ธ๋ฑ์ค [0][0]๋ถํฐ ์๊ณ๋ฐฉํฅ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ ์ด์ฐจ์ ๋ฐฐ์ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ n ≤ 30
์ ์ถ๋ ฅ ์
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]] |
์์ค ์ฝ๋
def solution(n):
if n == 1:
return [[1]]
answer = [[0 for j in range(n)] for i in range(n)]
i = 0 # ํ
j = 0 # ์ด
dir = 'r' # ๋ฐฉํฅ
for num in range(n*n):
answer[i][j] = num+1
if dir == 'r':
j += 1
if j == n-1 or answer[i][j+1] != 0:
dir = 'd'
elif dir == 'd':
i += 1
if i == n-1 or answer[i+1][j] != 0:
dir = 'l'
elif dir == 'l':
j -= 1
if j == 0 or answer[i][j-1] != 0:
dir = 'u'
else:
i -= 1
if i == 0 or answer[i-1][j] != 0:
dir = 'r'
return answer
ํ์ด
- 1 x 1 ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ์ [[1]]์ ์ถ๋ ฅ
- ํ ๋ฒํธ = i / ์ด ๋ฒํธ = j / ๋ฐฉํฅ = dir (r:์ค๋ฅธ์ชฝ → d:์๋์ชฝ → l:์ผ์ชฝ → u:์์ชฝ)
- n x n ๋ฒ์๋ฅผ ๋๋ฉด์ ์ซ์๋ฅผ ํ๋์ฉ ์ฑ์์ฃผ๋ for๋ฌธ
- ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ์ธ ๊ฒฝ์ฐ : ์ด ํ ์นธ ์ด๋ / ๋ง์ง๋ง ์ด์ด๊ฑฐ๋ ์นธ์ด ์ฑ์์ ธ ์์ผ๋ฉด ๋ฐฉํฅ ๋ณ๊ฒฝ
- ๋ฐฉํฅ์ด ์๋์ชฝ์ธ ๊ฒฝ์ฐ : ํ ํ ์นธ ์ด๋ / ๋ง์ง๋ง ํ์ด๊ฑฐ๋ ์นธ์ด ์ฑ์์ ธ ์์ผ๋ฉด ๋ฐฉํฅ ๋ณ๊ฒฝ
- ๋ฐฉํฅ์ด ์ผ์ชฝ์ธ ๊ฒฝ์ฐ : ์ด ํ ์นธ ์์ผ๋ก ์ด๋ / ์ฒซ ๋ฒ์งธ ์ด์ด๊ฑฐ๋ ์นธ์ด ์ฑ์์ ธ ์์ผ๋ฉด ๋ฐฉํฅ ๋ณ๊ฒฝ
- ๋ฐฉํฅ์ด ์์ชฝ์ธ ๊ฒฝ์ฐ : ํ ํ ์นธ ์๋ก ์ด๋ / ์ฒซ ๋ฒ์งธ ํ์ด๊ฑฐ๋ ์นธ์ด ์ฑ์์ ธ ์์ผ๋ฉด ๋ฐฉํฅ ๋ณ๊ฒฝ
์ด๊ฑฐ ๋ ๋ฒจ0 ๋ง์์..? ๊ทธ๋ ๋ค๋ฉด ๋ด ์ค๋ ฅ์ด ๋ง์ด๋์ค์ธ๊ฐ๋ณด๋ค....์ด๋ฐ ์ ๋ฐ ๋ฐฉ์์ผ๋ก ํด๋ณด๋ค๊ฐ ๊ฒฐ๊ตญ ๊ฒ์ํด์ ์๊ฒ ๋์๋๋ฐ ์์ผ๋ก ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ํ์ด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค...ํ๋ฌ์ค ์ค๋ ฅ์ด ๋ ๋๊น์ง ํ์ดํ ..!!
'์ฝ๋ฉ ๋ฌธ์ ํ์ด ๐ป > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (1) | 2023.12.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ํน์ดํ ์ ๋ ฌ (1) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 2์ ์์ญ (1) | 2023.11.24 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ์ฃผ์ฌ์ ๊ฒ์ 3 (1) | 2023.11.20 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ์กฐ๊ฑด ๋ฌธ์์ด (1) | 2023.11.18 |