728x90
๐ 1484 : [ ๊ธฐ์ด - ๋ฐฐ์ด ์ฐ์ต ] 2์ฐจ์ ๋ฐฐ์ด ๋ฌํฝ์ด ์ฑ์ฐ๊ธฐ 4-1
2์ฐจ์ ๋ฐฐ์ด ์์ ๋ฌํฝ์ด ๋ชจ์์ผ๋ก ๊ฐ์ ์ฑ์ฐ๋ ๋ฌธ์ ์ธ๋ฐ, ์ฌ์ค ์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด 1460๋ถํฐ ์ญ ํ์๋ค. ์ด 2๊ฐ์ง ์ ํ์ผ๋ก ๋๋ ์ ํ ์ ์๋ค.
โก๏ธ while๋ฌธ์ผ๋ก row
, column
๋ฐ๋ก๋ฐ๋ก ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๊ธฐ
- n * m์ ํฌ๊ธฐ๋ก ๊ฐ์ด 0์ธ 2์ฐจ์ ๋ฐฐ์ด
arr
์ ์ ์ธํ๋ค. row(ํ)
,column(์ด)
์ ๊ฐ๊ฐ 0๊ณผ -1๋ก ์ด๊ธฐํํ๋๋ฐ, ์ด์ ๋ 1์ฉ ์ฆ๊ฐํ๋ฉด์ ํด๋น ์์น์cnt
๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.- ๊ทธ๋ฆฌ๊ณ ์ค๊ฐ์ ํ๊ณผ ์ด์ ํฌ๊ธฐ๋ฅผ -1์ฉ ๊ฐ์์์ผฐ๋๋ฐ, ๋ฐ๋ณต๋ฌธ์ด ์งํ๋ ๋๋ง๋ค ์ฑ์์ผ ํ๋ ๊ฐ์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ด๋ค.
(0, 0)
๋ถํฐ ์์ํ์ฌcolumn
์ ๊ฐ์ ์ฑ์ฐ๊ณ ๋ ์ดํrow-1
๋ฒ์๋ก ๊ฐ์ ์ฑ์์ผํ๊ณ ๋ค์column-1
๋ฒ์๋ก ๊ฐ์ ์ฑ์์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. - ์ฑ์์ผ ํ๋ ๋ฐฉํฅ์ด
โก๏ธ, โฌ๏ธ
์ผ๋๋step = 1
์ ๊ฐ์ผ๋ก,โฌ ๏ธ, โฌ๏ธ
์ผ๋๋step = -1
์ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํด๋น ๋ฐฉํฅ์ผ๋ก ๊ฐ์ ์ฑ์์ค ์ ์๋ค.
โก๏ธ dx
, dy
๋ฅผ ์ฌ์ฉํ์ฌ ์ขํ๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ
- n * m์ ํฌ๊ธฐ๋ก ๊ฐ์ด 0์ธ 2์ฐจ์ ๋ฐฐ์ด
arr
์ ์ ์ธํ๋ค. - ๋ฌํฝ์ด ๋ฐฐ์ด์ด ์์ํ๋ ์ขํ๋ฅผ ์ง์ ํ๊ณ , ๋ฐฉํฅ์ ์ง์ ํ๋ค.
- R, D, L, U ์์์ ๋ง๊ฒ
dx, dy
๋ฅผ ์ค์ ํ๋ค. - ๋ง์ฝ, ๋ฒ์๊ฐ ๋ฒ์ด๋๋ฉด ๋ฒ์ด๋ ๊ฐ์ ์ง์ฐ๊ณ ๋ฐฉํฅ์ ๋ฐ๊พผ ํ ๋ค์ ์งํํ๋ค.
# 1๋ฒ ๋ฐฉ๋ฒ
n, m = map(int, input().split())
arr = [[0] * m for _ in range(n)]
row, column, cnt = 0, -1, 0
row_size, column_size = n, m
step = 1
while row_size and column_size:
for _ in range(column_size): # fill column_index
cnt += 1
column += step
arr[row][column] = cnt
row_size -= 1
for _ in range(row_size): # fill row_index
cnt += 1
row += step
arr[row][column] = cnt
column_size -= 1
step = -step # switch direction
for i in arr:
print(*i, ' ')
# 2๋ฒ ๋ฐฉ๋ฒ
n, m = map(int, input().split())
arr = [[0] * m for _ in range(n)]
x, y, direction = 0, 0
# R, D, L, U
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
for cnt in range(1, n*m+1):
arr[x][y] = cnt
x += dx[direction]
y += dy[direction]
if x < 0 or y < 0 or x >= n or y >= m or arr[x][y]:
x -= dx[direction]
y -= dy[direction]
direction = (direction + 1) % 4
x += dx[direction]
y += dy[direction]
for i in arr:
print(*i, ' ')
๋ฐ์ํ
๋๊ธ