[Python] BOJ 1913 - 달팽이
728x90
반응형
https://www.acmicpc.net/problem/1913
# 단순 구현 문제이다.
# 가끔 구현문제중에 이러한 형태의 배열을 사용하는 문제들이 나와 포스팅해본다.
N = int(input())
target = int(input())
# 상, 우, 하, 좌
dx, dy = [-1, 0, 1, 0], [0, 1, 0, -1]
# 처음 1의 위치 x, y에 넣어줌
if N % 2 == 1:
x, y = N//2, N//2
else:
x, y = N//2, N//2 - 1
m = [[0] * N for _ in range(N)]
m[x][y] = 1
cnt = 2
dir = 0
num = 2
while True:
for _ in range(cnt-1):
nx, ny = x + dx[dir], y + dy[dir]
m[nx][ny] = num
num += 1
if num == N**2+1:
break
x, y = nx, ny
if num == N**2+1:
break
dir = (dir + 1) % 4
# 위나 아래로 갈때 숫자 1 증가
if dir == 0 or dir == 2:
cnt += 1
for i in m:
print(*i)
for i in range(N):
for j in range(N):
if m[i][j] == target:
print(i + 1, j + 1)
(solved.ac 티어: 실버 5)
728x90
반응형
'문제풀이 > BaekjoonOnlineJudge' 카테고리의 다른 글
[Python] BOJ 9081 - 단어 맞추기 (0) | 2021.09.20 |
---|---|
[Python] BOJ 14675 - 단절점과 단절선 (0) | 2021.09.17 |
[Python] BOJ 1068 - 트리 (0) | 2021.09.15 |
[Python] BOJ 9663 - N-Queen (0) | 2021.09.15 |
[Python] BOJ 17140 - 이차원 배열과 연산 (0) | 2021.09.14 |
TAGS.