-
[코테]백준 1913 달팽이 파이썬코딩테스트 2025. 1. 31. 20:11
https://www.acmicpc.net/problem/1913
이 문제는 나선형으로 숫자를 배열하는 문제인데, 하우상좌로 이동하는것은 파악했는데 이동방식을 어떻게 조건문을 줘야할 지 몰라서 헤맸던 문제다.. ㅠㅠ 특히 계속 중앙인 1에서부터 시작하려고 했어서 막혔던 문제이다... ㅠㅠ
전체 코드는 다음과 같다.
이동시 조건은 그냥 범위를 벗어나지 않는지, 0이 아닌지만 주면 되는.. 싱거운 문제였다 ㅠㅠ
import sys
read = sys.stdin.readlineN = int(read())M = int(read())
arr = [[0 for _ in range(N)] for _ in range(N)]
# 하우상좌dx = [1,0,-1,0]dy = [0,1,0,-1]
dir = 0num = N ** 2x, y = 0, 0while num > 0:arr[x][y] = numif num == M:target_x, target_y = x + 1, y + 1nx, ny = x + dx[dir], y + dy[dir]
if not (0 <= nx < N and 0 <= ny < N and arr[nx][ny] == 0):dir = (dir+1) % 4nx, ny = x + dx[dir], y + dy[dir]x, y = nx, nynum -= 1
for row in arr:print(*row)
print(target_x, target_y)'코딩테스트' 카테고리의 다른 글
[코테]백준 17144 미세먼지 안녕! 파이썬 (0) 2025.02.02 [코테]백준 9012 괄호 파이썬 (0) 2025.02.02 [코테]백준 16236 아기상어 파이썬 (0) 2025.01.31 [코테]99클럽 코테 스터디 10일차 TIL 백준 2573 빙산 (0) 2025.01.26 [코테] 백준 14891 톱니바퀴 파이썬 (0) 2025.01.22