적힌 숫자가 중복 없이 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)
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 2819 격자판의 숫자 이어붙이기 (0) | 2021.10.08 |
---|---|
[SWEA][Python] 1970 쉬운 거스름돈 (0) | 2021.10.08 |
[SWEA][Python] 1486 장훈이의 높은 선반 (0) | 2021.10.08 |
[SWEA][Python] 1865 동철이의 일 분배 (0) | 2021.10.07 |
[SWEA][Python] 5248 그룹 나누기 (0) | 2021.10.06 |