728x90
반응형
풀기 전 생각해보기😮
- 이차원 배열 상에서 인덱스 조건 주의하기
- 방향을 어떻게 설정해 줄 것인지
풀이🛫
T = int(input())
for t in range(T):
N = int(input())
arr = [[0] * N for i in range(N)]
col, row = 0, 0
v = 0
arr[col][row] = 1
dcol = [-1, 0, 1, 0]
drow = [0, 1, 0, -1]
for i in range(1, N**2+1):
arr[col][row] = i
col = col+dcol[v]
row = row+drow[v]
if col < 0 or row < 0 or N <= col or N <= row or arr[col][row] != 0:
col = col-dcol[v]
row = row-drow[v]
v = (v+1) % 4
col = col+dcol[v]
row = row+drow[v]
print(f"#{t+1}")
for i in arr:
for j in i:
print(j, end=" ")
print()
핵심 정리🎁
for i in range(1, N**2+1):
arr[col][row] = i
col = col+dcol[v]
row = row+drow[v]
#1
if col < 0 or row < 0 or N <= col or N <= row or arr[col][row] != 0:
col = col-dcol[v]
row = row-drow[v]
#2
v = (v+1) % 4
col = col+dcol[v]
row = row+drow[v]
- #1_이전까지 ncol, nrow를 사용하거나 범위를 지정할 때 0<=col<N와 같은 조건을 주로 사용했었는데, 문제에 응용할 때마다 자주 실수를 겪는 것 같다. 위와 같이 코드가 다소 길어지더라도 풀어주는 것도 실력향상에 도움이 될 것 같다.
- #2_방향을 결정하는 v값을 정확하게 입력해주어야 한다. (v+1) % 4를 쉽게 떠올리지 못해서 어려움을 겪었다
링크💎
후기 😎
- 이차원 배열, 특히 여러 달팽이 문제가 계단이 되는 것 같다. 답답하지만 이겨내야지 뭐..
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] #1211. Ladder2_파이썬 (0) | 2022.08.11 |
---|---|
[SWEA] #1210. Ladder1_파이썬 (0) | 2022.08.11 |
[SWEA] #11014. 농작물 수확_파이썬 (0) | 2022.08.04 |
[SWEA] #11010 대각 최대 합_파이썬 (0) | 2022.08.02 |
[SWEA] # 11012. 사각영역들의 합_파이썬 (0) | 2022.08.02 |