https://www.acmicpc.net/problem/1913
문제풀이
- 어찌어찌 풀었는데 내 코드에 아쉬움이 남음
- 다른 사람 코드를 보니 방향을 설정하여 1234가 반복되게 하여 코드를 작성했음
- 나는 count와 go를 이용해 방향과 나아갈 칸을 설정
n = int(input())
target = int(input())
snail = [[0] * n for _ in range(n)] # 초기화
# 중간값부터 시작
a = n // 2
b = n // 2
count = 0 # 홀수인지 짝수인지 판별 (2번 진행해야 i, j +, -가 바뀜)
go = 1 # 해당 방향으로 몇칸씩 나갈것인지
num = 1 # snail에 1씩 증가하게될 수
result = '' # 좌표
snail[a][b] = num # 초기화
while num != n*n:
count += 1 # 몇번 진행했는지 1씩 증가
if count % 2 != 0: # 홀수번진행(i움직임)
if go % 2 != 0: # 홀수칸만큼 나아감
for i in range(go):
a -= 1
num += 1
snail[a][b] = num
if num == n*n:
break
else: # 짝수칸만큼 나아감
for i in range(go):
a += 1
num += 1
snail[a][b] = num
if num == n*n:
break
else: # 짝수번 진행(j움직임)
if go % 2 != 0: # 홀수칸만큼 나아감
for i in range(go):
b += 1
num += 1
snail[a][b] = num
if num == n*n:
break
go += 1
else: # 짝수칸만큼 나아감
for i in range(go):
b -= 1
num += 1
snail[a][b] = num
if num == n*n:
break
go += 1
for i in range(n):
for j in range(n):
print(snail[i][j], end=' ')
if snail[i][j] == target:
result += str(i+1) + ' ' + str(j+1)
print(end='\n')
print(result)