🧑💻 [Python] 백준 1913 달팽이
Silver 3 - 구현
무조건 matrix[0][0]
은 N * N 이다
시작을 N * N으로 하고, 내려가면서 -1 을 한다
만약에 다음 좌표가 0이 아니거나, 행렬을 나가게 된다면 왼쪽으로 90도를 돌아서 앞으로 가면서 -1을 하면 된다
이것을 좌표의 값이 1이 될때까지 진행을 한다
코드
N = int(input())
M = int(input())
matrix = [[0] * N for _ in range(N)]
num, i, j = N * N, 0, 0
ans_row, ans_column = 0, 0
while num > 0:
# 아래로 내려가기
while i < N and matrix[i][j] == 0:
if num == M:
ans_row, ans_column = i + 1, j + 1
matrix[i][j] = num
num, i = num - 1, i + 1
i, j = i - 1, j + 1
# 오른쪽으로 가기
while j < N and matrix[i][j] == 0:
if num == M:
ans_row, ans_column = i + 1, j + 1
matrix[i][j] = num
num, j = num - 1, j + 1
i, j = i - 1 , j - 1
# 위로 가기
while i >= 0 and matrix[i][j] == 0:
if num == M:
ans_row, ans_column = i + 1, j + 1
matrix[i][j] = num
num, i = num - 1, i - 1
i, j = i + 1, j - 1
# 왼쪽으로 가기
while j >= 0 and matrix[i][j] == 0:
if num == M:
ans_row, ans_column = i + 1, j + 1
matrix[i][j] = num
num, j = num - 1, j - 1
i, j = i + 1, j + 1
for m in matrix:
print(' '.join(map(str, m)))
print(ans_row, ans_column)
'알고리즘 > 구현' 카테고리의 다른 글
[Python] 백준 15683 감시 (0) | 2023.03.20 |
---|---|
[Python] 백준 14719 빗물 (0) | 2023.03.15 |
[Python] 백준 15686 치킨 배 (0) | 2023.03.14 |
[Python] 백준 14502 연구소 (0) | 2023.03.14 |
[Python] 백준 3107 IPv6 (0) | 2023.03.12 |