SWEA

1954 .달팽이 숫자

zhelddustmq 2024. 7. 15. 15:58

문제: 무단 배포 금지로 인해 사이트 주소로 남깁니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

정답 코드:

T = int(input())
for test_case in range(1, T + 1):
    N = int(input())
    # 1일 때
    if N == 1:
        print(f"#{test_case}")
        print(1)
        continue
    # 2일 때
    elif N == 2:
        print(f"#{test_case}")
        arr = [[1,2],[4,3]]
        for i in range(len(arr)):
            print(*arr[i])
        continue
    #3 이상부터
    arr = [[None] * N for _ in range(N)]
    # 한 바퀴 돌 때마다, 범위 조정 하기 위한 변수 설정
    c_round = 0
    # 들어갈 값
    value = 1
    while True:
        for i in range(4):
            for i in range(N - 1 - (2 * c_round)):
                arr[c_round][i + c_round] = value
                value += 1
            arr = list(map(list, zip(*arr)))
            arr.reverse()
        c_round += 1
        if N - c_round == 1:
            if N % 2 == 1:
                arr[N//2][N//2] = value
            break
    print(f"#{test_case}")
    for i in range(N):
        print(*arr[i])

'SWEA' 카테고리의 다른 글

1284. 수도 요금 경쟁  (0) 2024.07.15
1945. 간단한 소인수분해  (0) 2024.07.15
1959. 두 개의 숫자열  (0) 2024.07.15
1961. 숫자 배열 회전  (0) 2024.07.15
1979. 어디에 단어가 들어갈 수 있을까  (0) 2024.07.15