[백준/파이썬] 1913번 달팽이 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1913번 달팽이
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
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를 만났을 때의 좌표를 함께 저장해
마지막에 달팽이 배열과 좌표를 출력합니다.
댓글남기기