반응형
[ 문제 ]
난이도: D2
문제 번호: 1954
달팽이는 1부터 N*N까지의 숫자가 시계방향으로 이루어져 있다.
다음과 같이 정수 N을 입력 받아 N크기의 달팽이를 출력하시오.
[제약사항]
달팽이의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10)
[ 코드 ]
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
|
for tc in range(1, int(input())+1):
N = int(input())
total = N * N
arr = [[0] * N for _ in range(N)]
cnt = 1
# 시작은 좌측 상단
r = 0
c = 0
dr = [0, 1, -1, 0]
dc = [1, 0, 0, -1]
# 오른쪽이 시작이므로 시작점은 0
now = 0
while cnt <= total:
# 범위를 벗어나지 않고 그 안의 숫자가 0일 때
if 0 <= r < N and 0 <= c < N and not arr[r][c]:
arr[r][c] = cnt
cnt += 1
else:
# 더해서 초과된 부분을 다시 빼줌
r -= dr[now]
c -= dc[now]
# 인덱스 초과 방지
now = (now+1) % 4
r += dr[now]
c += dc[now]
print('#{}'.format(tc))
for i in range(N):
for j in range(N):
print(arr[i][j], end=' ')
print()
|
cs |
반응형
'SW Expert' 카테고리의 다른 글
[SWEA] 1961 숫자 배열 회전 Python (0) | 2021.05.21 |
---|---|
[SWEA] 1948 날짜 계산기 Python (0) | 2021.05.20 |
[SWEA] 1946 간단한 압축 풀기 Python (0) | 2021.05.18 |
[SWEA] 1945 간단한 소인수분해 Python (0) | 2021.05.17 |
[SWEA] 1933 간단한 N 의 약수 Python (0) | 2021.05.16 |