본문 바로가기
알고리즘/구현

[Python] 백준 1913 달팽이

by JayAlex07 2023. 3. 4.

🧑‍💻 [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