ํฐ์คํ ๋ฆฌ ๋ทฐ
[swea] 1954. ๋ฌํฝ์ด ์ซ์ / python ํ์ด์ฌ / 2์ฐจ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ ๊ทผ
jen jen 2021. 2. 17. 05:05Intro
๐ก 2์ฐจ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ ๊ทผ์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
์๋ ๊ทธ๋ฆผ์ฒ๋ผ m x n ๋ฐฐ์ด์ ์๊ฐํด๋ณด์. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์๋ก, ์๋๋ก ๊ฐ ์๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ์ ์๋ค.
๋ ธ๋ญ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ดค์ ๋,
๋ ธ๋ญ์ด์ ์ ์๋๋ ๋ ธ๋ญ์ด์ column ์ธ๋ฑ์ค๊ฐ ๋์ผํ๊ณ row ์ธ๋ฑ์ค๋ ํ๋์ฉ ์ฐจ์ด๋๋ค.
๋ ธ๋ญ์ด์ ์ข์ฐ๋ ๋ ธ๋ญ์ด์ row ์ธ๋ฑ์ค๊ฐ ๋์ผํ๊ณ column ์ธ๋ฑ์ค๋ ํ๋์ฉ ์ฐจ์ด๋๋ค.
๋ฐ๋ผ์, ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด์ ๋ฐฉํฅ์ ํ์ ํ๊ณ ์ถ์๋๋ delta row(dr
), delta column(dc
) ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ์ ๊ทผํ๋ฉด ๋๋ค
# ์, ์ฐ, ํ, ์ข
dr = [-1, 0, 1, 0]
dc = [0, 1, 0, -1]
# nr: next row, nc: next column
# cr: current row, cc: current column
for i in range(4):
nr = cr + dr[i]
nc = cc + dc[i]
thinking
์๋ ๊ทธ๋ฆผ์ฒ๋ผ N = 5. ์ฆ, 5 x 5 ๋ฐฐ์ด์ ์๊ฐํด๋ณด์.
๋ฌํฝ์ด ๋ฌธ์ ๋ ์์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ 2์ฐจ์ ๋ฐฐ์ด ํ์์ผ๋ก ํด๊ฒฐํ๋ค.
์ฐ->ํ->์ข->์
์ ๋ฐฉํฅ์ ํ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ์ค ํ, ๋ฐฉํฅ ์ ํ์ด ์ผ์ด๋๊ธฐ ์ ๊น์ง ๊ฐ์ ๋ํ๋ค๊ฐ
5, 9, 13 ์ฒ๋ผ ๋ ์ด์ ๊ทธ ๋ฐฉํฅ์ผ๋ก ์งํํ ์ ์๋ ๊ฒฝ์ฐ (์ฆ, row๋ column์ ์ธ๋ฑ์ค๊ฐ ๋ฒ์ ๋ฐ์ธ ๊ฒฝ์ฐ) ์
16์ฒ๋ผ ์ธ๋ฑ์ค์ ๋ฒ์ ์์๋ ๋ค์ง๋ง, ๋ ๊ฐ๋ ค๊ณ ํด๋ ์ด๋ฏธ ์ซ์๊ฐ ์ ๋ ฅ๋ ์ํ๋ผ ๋ชป๊ฐ๋ ๊ฒฝ์ฐ๋ผ๋ฉด (์ฆ, 0์ด ์๋๋ผ๋ฉด)
์ด๋ฏธ r, c๋ฅผ ์ ๋ฐ์ดํธ ์์ผ์คฌ์ผ๋ฏ๋ก ๋ค์ ๋นผ์ ์์์น ์์ผ์ฃผ๊ณ ๋ฐฉํฅ ์ ํ ๋ค, ๋ค์ ์งํํ ์ ์๋๋ก ์กฐ๊ฑด๋ฌธ์ ์ค์ ํ๋ค.
๋ฐฉํฅ ์ ํ ์, dist += 1
์ ํด์ฃผ๋ฉด dist๊ฐ 0,1,2,3,4,5,6,7,8,9, ... ๋ก ๊ณ์ ์ฆ๊ฐํ๋ค.
0, 1, 2, 3 ์ผ๋ก๋ง ์์ง์ผ ์ ์๊ฒ %
๋ฅผ ์ฌ์ฉํ์!
์ฝ๋
print ํ ๋, ๋ฆฌ์คํธ ์์ * ๋ฅผ ๋ถ์ด๋ฉด []๊ฐ ์ถ๋ ฅ๋์ง ์๋๋ค.
import sys
sys.stdin = open("input.txt")
T = int(input())
# row, col ์ธ๋ฑ์ค๋ก ํ์ํ ์ ์๊ฒ ๋ฐฉํฅ ์ค์ (๋ฌํฝ์ด ๋ฐฉํฅ์ด๋๊น ์ฐ->ํ->์ข->์)
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
for tc in range(1, T+1):
N = int(input())
snail = [[0]*N for _ in range(N)]
# ์ด๊ธฐ ์์น & ํ์ ๋ฐฉํฅ ์ค์
r, c = 0, 0
dist = 0 # 0:์ฐ, 1:ํ, 2:์ข, 3:์
for n in range(1, N*N + 1):
snail[r][c] = n
r += dr[dist]
c += dc[dist]
# ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ 0์ด ์๋ ๋ค๋ฅธ ๊ฐ์ด ์ด๋ฏธ ์๋ค๋ฉด, dist ๋ฐฉํฅ ์ฒด์ธ์ง
# ๊ทผ๋ฐ ์ด๋ฐ ๊ฒฝ์ฐ๋ผ๋ฉด ์์ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ์์์น์์ผ์ค์ผํ๋ฏ๋ก ๋นผ์ค์ผํจ
# ๊ทธ๋ฐ๋ค์ dist์ ๋ฐฉํฅ์ ๋ฐ๊พธ๊ณ , ๋ฐฉํฅ ๋ฐ๊ฟจ์ผ๋ฉด ๋ค์ ์์ง์ผ ์ ์๋๋ก ํ๋ ฌ ์ธ๋ฑ์ค ์
๋ฐ์ดํธ
if r < 0 or c < 0 or r >= N or c >= N or snail[r][c] != 0:
# ์คํ์ทจ์
r -= dr[dist]
c -= dc[dist]
# dist๋ % 4 ์ํด์ฃผ๋ฉด 0123, 4567, ... ์ด๋ฐ์์ผ๋ก ์ซ์ ์ปค์ง๋ฏ๋ก ๋๋จธ์ง๋ก ์ ๊ทผ
dist = (dist + 1) % 4
# ๋ค์ gogo
r += dr[dist]
c += dc[dist]
print("#{}".format(tc))
for row in snail:
print(*row)
print()
'algorithm > swea' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea] 1220. Magnetic / python ํ์ด์ฌ (0) | 2021.04.08 |
---|---|
[swea] 1219. ๊ธธ์ฐพ๊ธฐ / python ํ์ด์ฌ (1) | 2021.04.08 |
[swea] 4869. ์ข ์ด๋ถ์ด๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
[swea] 1860. ์ง๊ธฐ์ ์ต๊ณ ๊ธ ๋ถ์ด๋นต / python ํ์ด์ฌ (0) | 2021.02.26 |
[swea] 1210. Ladder 1 ์ฌ๋ค๋ฆฌํ๊ธฐ / python ํ์ด์ฌ (0) | 2021.02.17 |
- ๋ณด์์ผํ
- Python
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- dfs
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ํ์ด์ฌ
- ์ผ์ฑ์ฝํ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- 2018 ์นด์นด์ค ๊ณต์ฑ
- 21609 ์์ด ์คํ๊ต
- ๋ฐฑ์ค
- merge ์๋ฌ
- ๋ธ๋ฃจํธํฌ์ค
- react
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- merge์๋ฌ
- BFS
- git ๋ฏธ๋ฌ๋ง
- swea
- ๊ธฐ์ง๊ตญ์ค์น
- dp
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ์ผ์ฑ๊ธฐ์ถ
- ์์ด๋๋ง์๊ธฐ
- Total
- Today
- Yesterday