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. 달팽이 숫자
T = int(input())
for _ in range(T):
n = int(input())
print(f"#{n}")
li = [[0] * n for i in range(n)]# 입력값에 따른 활동 영역 미리 생성
di = [0, 1, 0, -1] # → ↓ ← ↑
dj = [1, 0, -1, 0]
i, j = 0, 0
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 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.
학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 4837. 부분집합의 합 (0) | 2022.02.16 |
---|---|
[SW Expert Academy] 4836. 색칠하기 (0) | 2022.02.16 |
[SW Expert Academy] 6485. 삼성시의 버스 노선 (0) | 2022.02.10 |
[SW Expert Academy] 5789. 현주의 상자 바꾸기 (0) | 2022.02.10 |
[SW Expert Academy] 1945. 간단한 소인수분해 (0) | 2022.02.10 |