BOJ/Silver

[BOJ] #1913 달팽이

Opal1031 2026. 4. 13. 11:22

달팽이

백준 #1913


📌 문제

예제 입력

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