[백준/파이썬] 1913번 달팽이 풀이

업데이트:



문제 정보


풀이

문제

N x N 배열을 달팽이 형태로 채우고, 주어진 값 F의 위치를 출력하는 문제입니다.

코드

n, f, rj = int(input()), int(input()), []
nums = [[0]*n for _ in range(n)]
i, j, v = -1, 0, n*n
while v > 0:
    while i+1 < n and nums[i+1][j] == 0:
        i+=1
        nums[i][j], rj = v, [i+1, j+1] if v==f else rj
        v-=1
    while j+1 < n and nums[i][j+1] == 0:
        j+=1
        nums[i][j], rj = v, [i+1, j+1] if v==f else rj
        v-=1
    while i-1 < n and nums[i-1][j] == 0:
        i-=1
        nums[i][j], rj = v, [i+1, j+1] if v==f else rj
        v-=1
    while j-1 < n and nums[i][j-1] == 0:
        j-=1
        nums[i][j], rj = v, [i+1, j+1] if v==f else rj
        v-=1
result = ""
for row in nums:
    result+=" ".join(map(str, row))+"\n"
print(result[:-1])
print(*rj)

설명

현재 방향으로 갈 수 있을 때까지 이동하며 숫자를 감소시키고, 막히면 방향을 바꿔 반복합니다.

배열을 채우는 동안 F를 만났을 때의 좌표를 함께 저장해 마지막에 달팽이 배열과 좌표를 출력합니다.



댓글남기기