[SWEA][Python]#1954. 달팽이 숫자

MEIN_FIGUR·2021년 8월 12일
0

SWEA_문제풀이

목록 보기
13/21
post-custom-banner

📌풀이


내가 쓴 풀이(성공)

T = int(input())
for tc in range(1, T+1):
    n = int(input())
    arr = [[0 for _ in range(n)] for _ in range(n)]
    
    #방향 표시용 리스트(우, 하, 좌, 상)
    d = [[1, 0], [0, 1], [-1, 0], [0, -1]]
    num, f = 1, 0 #현재 숫자, 방향을 표시하기 위한 변수(flag)
    x, y = 0, 0 #현재 위치
    while num <= n**2 :
        arr[y][x] = num
        num += 1
		
        #변경한 위치가 범위를 벗어나는지 확인
        check_x = x + d[f][0]
        check_y = y + d[f][1]
        
        #범위를 벗어나는 경우, flag를 바꿔줌
        if check_x < 0 or check_x >= n or check_y < 0 or check_y >= n or arr[check_y][check_x]:
            f = (f+1)%4
        
        #위치 변경
        x += d[f][0]
        y += d[f][1]
    
    print(f'#{tc}')
    for i in range(n):
        print(' '.join(map(str,arr[i])))



📌후기


처음에 되게 복잡하게 구현했었는데, 방향을 표시한 리스트를 적용함으로써 코드를 조금 더 간결하게 구현할 수 있었다.

profile
Growing Developer
post-custom-banner

0개의 댓글