practivceAlgorithm/swexpertacademy
[SWEA][Python] 1861 정사각형방
findTheValue
2021. 10. 8. 12:40
적힌 숫자가 중복 없이 1씩 늘어나기 때문에 배열에 index로 쓸 수 있습니다.
그 후 index에 따라 이동 가능여부를 조사해주면 됩니다.
올해 하반기 라인 코테 3번 문제와 아이디어가 비슷합니다.
for test in range(1, int(input()) + 1):
N = int(input())
dp = [0] * (N ** 2 + 1)
for i in range(N):
row = list(map(int, input().split()))
for j in range(N):
dp[row[j]] = (i, j)
delta = ((0, 1), (1, 0), (0, -1), (-1, 0))
max_length, cnt, start, answer = 1, 1, 1, 1
for num in range(1, len(dp)):
x, y = dp[num]
for dx, dy in delta:
if dp[num - 1] == (x + dx, y + dy):
cnt += 1
if max_length < cnt:
max_length, answer = cnt, start
break
else:
cnt, start = 1, num
print(f'#{test}', answer, max_length)