백준 1959 달팽이3

gmlwlswldbs·2021년 11월 1일
0

코딩테스트

목록 보기
72/130

달팽이 2에 비해 n의 크기가 매우 매우 커짐. 똑같이하면 메모리 초과

dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

m, n = map(int, input().split())

x = 0
y = -1
maxiter_x = m - 1
maxiter_y = n
d = 0
i = 0
iter = 1
cnt = 0
while True:
    d = d % 4
    nx, ny = x + dx[d], y + dy[d]
    if d == 0 or d == 2:
        if iter == maxiter_y:
            maxiter_y -= 1
            d += 1
            iter = 1
            cnt += 1
        else:
            iter += 1
    elif d == 1 or d == 3:
        if iter == maxiter_x:
            maxiter_x -= 1
            d += 1
            iter = 1
            cnt += 1
        else:
            iter += 1
    i += 1
    if i == m * n + 1:
        print(cnt-1)
        print(x+1, y+1)
        break
    x, y = nx, ny

달팽이1을 응용해봤는데 시간초과

0개의 댓글