728x90
📌 문제
https://swexpertacademy.com/main/main.do
📌 코드
T = int(input())
for t in range(1, T+1) :
N = int(input())
snail = []
for _ in range(N) :
snail.append(list(0 for __ in range(N)))
i = 0
j = 0
line = 0
way = 0
for n in range(1, N*N + 1) :
if way%4 == 0 :
if j < N :
snail[i][j] = n
j += 1
else :
i += 1
j -= 1
way += 1
snail[i][j] = n
i += 1
elif way%4 == 1 :
if i < N :
snail[i][j] = n
i += 1
else :
i -= 1
j -= 1
way += 1
snail[i][j] = n
j -= 1
elif way%4 == 2 :
if j >= line :
snail[i][j] = n
j -= 1
else :
i -= 1
j += 1
way += 1
snail[i][j] = n
i -= 1
elif way%4 == 3 :
if i > line :
snail[i][j] = n
i -= 1
else :
i += 1
j += 1
way += 1
snail[i][j] = n
j += 1
line += 1
N -= 1
print(f'#{t}')
for I in range(len(snail[0])) :
for J in range(len(snail[0])) :
if J == len(snail[0]) - 1 :
print(snail[I][J])
else :
print(snail[I][J], end=' ')
꼬박 하루를 다 써서 푼 문제,,,😭
이건 분명히 더 간단하게 정리할 수 있을것이다... 근데 이 문제에 너무 질려서 당분간은 보고 싶지 않음..ㅎ...
나중에 다시 한 번 풀어보는 걸로! (아마도.. SWEA D2 다 풀고 나서..? 아니면 그보다 조금 더 뒤에...?ㅎㅎㅎ..)
+) 0811
import sys
sys.stdin = open('input.txt')
T = int(input())
for t in range(1, T+1):
N = int(input())
result = [[0]*N for _ in range(N)]
dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]
x = 0
y = 0
way = 0
for n in range(1, N**2+1):
result[x][y] = n
x_ = x + dx[way]
y_ = y + dy[way]
if x_ not in range(N) or y_ not in range(N) or result[x_][y_] != 0:
way = (way + 1) % 4
x += dx[way]
y += dy[way]
print(f'#{t}')
for row in result:
print(*row)
생각보다 빨리 다시 풀게 되었다...ㅎ...
델타 배열을 통해서 상하좌우로 이동할 수 있게 구현해보았다.
728x90
'ALGORITHM > SW Expert Academy' 카테고리의 다른 글
[SWEA/Python] 4831. 전기버스 (0) | 2021.08.13 |
---|---|
[SWEA/Python] 1206. View (0) | 2021.08.13 |
[SWEA/Python] 1945. 간단한 소인수분해 (0) | 2021.08.09 |
[SWEA/Python] 6217. 객체지향 3 (0) | 2021.07.30 |
[SWEA/Python] 6311. 내장함수 4 (0) | 2021.07.24 |
댓글