[백준] 1913번 달팽이

게으른 완벽주의자·2023년 3월 19일

백준

목록 보기
22/27

백준_1913

삼성코테의 가장 기초가 되는 달팽이 문제
역시나 어려운 달팽이ㅠ_ㅠ
우노 님의 코드를 참고했습니다

n = int(input())
target = int(input())
graph = [[0 for _ in range(n)] for _ in range(n)]

x = n//2
y = n//2
#상하좌우
dx = [-1,1,0,0]
dy = [0,0,-1,1]
graph[x][y] = 1
#result = []
num = 2
size = 3 #최소 테두리의 사이즈

while x!=0 or y!=0 : #x,y가 0,0이 될 때까지
    while num <= size*size: #현재 테두리를 다 지날때까지
        if x==y==(n//2):      #시작점이라면 이동횟수 초기화 & 위로 한 번 움직이기
            up, right, down, left = size, size-2, size-1, size-1
            x += dx[0]
            y += dy[0]
            up -= 1

        elif right > 0:
            x += dx[3]
            y += dy[3]
            right -= 1

        elif down > 0:
            x += dx[1]
            y += dy[1]
            down -= 1

        elif left > 0:
            x += dx[2]
            y += dy[2]
            left -= 1

        else :
            x += dx[0]
            y += dy[0]
            up -= 1

        graph[x][y] = num
        #if num==target:
            #result = [x+1,y+1]
        num += 1

    size += 2       #현재 테두리를 다 지나면 그 다음 테두리 사이즈로 변경
    n -= 2          #시작 좌표 변경

# for i in range(len(graph)):
#     print(*graph[i])
# print(*result)

result_x, result_y = 0, 0
for i in range(len(graph)):
    for j in range(len(graph)):
        print(graph[i][j], end=' ')
        if graph[i][j] == target:
            result_x = i+1
            result_y = j+1
    print()

print(result_x, result_y)

왜인지는 모르겠는데 print(*result), print(*graph[i]) 방식으로 출력하면 런타임에러가 난다
인덱스 문제인가? 왜일까?

profile
데이터를 공부하고 있습니다

0개의 댓글