달팽이
📌 문제

예제 입력
7
35예제 출력
49 26 27 28 29 30 31
48 25 10 11 12 13 32
47 24 9 2 3 14 33
46 23 8 1 4 15 34
45 22 7 6 5 16 35
44 21 20 19 18 17 36
43 42 41 40 39 38 37
5 7📌 풀이
Logic
- 배열의 크기 N, 찾을 숫자 Tag 입력 받기
- 나선형으로 배열 채우기
- N * N ~ 1까지 감소하며 배치
- 배치 가능한 범위를 벗어나면 반시계 방향으로 회전
- 완성된 배열과 Tag 위치 출력
# 변수명
N : 입력할 시리얼 번호 개수
serial : 조건 정보를 담은 리스트
Num : 입력한 시리얼 번호
Sum : 시리얼 번호의 숫자 합
Python
import sys
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
N = int(sys.stdin.readline())
Tag = int(sys.stdin.readline())
mat = [[0] * N for _ in range(N)]
Num = N * N
i, j = 0, 0
dir = 0
Tag_dx, Tag_dy = 0, 0
while (Num > 0):
mat[i][j] = Num
if (Num == Tag):
Tag_dx, Tag_dy = i + 1, j + 1
Num -= 1
if (Num > 0):
if (((i + dx[dir]) < 0) or ((i + dx[dir]) >= N) or
((j + dy[dir]) < 0) or ((j + dy[dir]) >= N) or
(mat[i + dx[dir]][j + dy[dir]] != 0)):
dir = (dir + 1) % 4
i += dx[dir]
j += dy[dir]
for i in mat:
print(*i)
print(Tag_dx, Tag_dy)✏️ 새로운 내용
-
📚 회고
💡 블로그 복귀
- 드디어 이사 후 정리를 모두 마쳤다.
- 그동안 연속 스트릭을 유지하려고 브론즈 등급의 간단한 문제만 풀었지만, 이제 다시 본격적으로 문제 풀이에 집중해야 할 시점이다.
- 9월 개강 전까지는 가볍게 하나의 사이드 프로젝트도 진행해볼 계획이다.
'BOJ > Silver' 카테고리의 다른 글
| [BOJ] #2553 마지막 팩토리얼 수 (0) | 2026.04.13 |
|---|---|
| [BOJ] #1448 삼각형 만들기 (0) | 2026.04.13 |
| [BOJ] #1431 시리얼 번호 (0) | 2026.04.13 |
| [BOJ] #1439 뒤집기 (0) | 2026.04.13 |
| [BOJ] #1769 3의 배수 (1) | 2026.04.13 |