깡 구현 그 자체...
BFS에서 길 찾기 했던거 약간 응용함..
쓰읍.... 가독성을 위해 코드 길이가 길어졌는데..
썩 효율적이지도 못한거 같다..
N = int(input())
findNum = int(input())
snail = [[0] * N for _ in range(N)]
direction = [[1, 0], [0, 1], [-1, 0], [0, -1]] # 하 우 상 좌
diCurrent = 0
cX = 0
cY = 0
findX = 0
findY = 0
nN = N * N
while True:
if snail[cY][cX] == 0:
snail[cY][cX] = nN
nN -= 1
if nN == 0:
break
cY += direction[diCurrent][0]
cX += direction[diCurrent][1]
if cY == N:
cY -= 1
diCurrent += 1
if diCurrent == 4:
diCurrent = 0
cX += direction[diCurrent][1]
if cY == -1:
cY += 1
diCurrent += 1
if diCurrent == 4:
diCurrent = 0
cX += direction[diCurrent][1]
if cX == N:
cX -= 1
diCurrent += 1
if diCurrent == 4:
diCurrent = 0
cY += direction[diCurrent][0]
if cX == -1:
cX += 1
diCurrent += 1
if diCurrent == 4:
diCurrent = 0
cX += direction[diCurrent][1]
if snail[cY][cX] != 0:
cY -= direction[diCurrent][0]
cX -= direction[diCurrent][1]
diCurrent += 1
if diCurrent >= 4:
diCurrent = 0
cY += direction[diCurrent][0]
cX += direction[diCurrent][1]
for i in range(N):
for j in range(N):
if snail[i][j] == findNum:
findX = i + 1
findY = j + 1
print(snail[i][j], end=" ")
print()
print(findX, findY)
'Algorithm > Implementaion' 카테고리의 다른 글
[백준] 1417번 국회의원 선거 (0) | 2020.11.28 |
---|---|
[백준] 11286번 절대값 힙 (0) | 2020.11.26 |
[백준] 1032번 명령 프롬프트 (0) | 2020.11.25 |
[백준] 1966번 프린터 큐 (0) | 2020.11.25 |
[백준] 7568번 덩치 (0) | 2020.11.25 |
댓글