본문 바로가기
Develop/Python + SWEA

[SW Expert Academy] 1954. 달팽이 숫자

by Tarra 2022. 2. 14.

1954. 달팽이 숫자


문제)

달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.
다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.

 

N이 3일 경우,

 

 

N이 4일 경우,

 

 

[제약사항]
달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)

[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 N이 주어진다.

[출력]
각 줄은 '#t'로 시작하고, 다음 줄부터 빈칸을 사이에 두고 달팽이 숫자를 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)


 

풀이)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 1954. 달팽이 숫자
 
= int(input())
 
for _ in range(T):
    n = int(input())
    print(f"#{n}")
    li = [[0* n for i in range(n)]# 입력값에 따른 활동 영역 미리 생성
 
    di = [010-1# → ↓ ← ↑
    dj = [10-10]
 
    i, j = 00
    cnt = 1
    way = 0
    while True:
        if li[i][j] == 0:
            li[i][j] = cnt # 현재 위치 확인 후 체크
            if cnt == n * n:
                break
            cnt += 1
 
            if 0 <= i + di[way] < n and 0 <= j + dj[way] < n: # 다음 값이 i.j 범위값이면
                if li[i + di[way]][j + dj[way]]:
                    way += 1
                    way %= 4
                    i += di[way]
                    j += dj[way]
                else:
                    i += di[way]
                    j += dj[way]
            else:
                way += 1
                way %= 4
                i += di[way]
                j += dj[way]
 
    for i in li:
        print(*i)
cs
 

 


문제 출처 : https://swexpertacademy.com/main/main.do

 

SW Expert Academy

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

swexpertacademy.com

※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.

학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.