문제📖
풀이🙏
- 2차원 리스트에서 가장 긴 연속부분을 찾는 메소드 check(list)를 정의한다.
- check 메소드는 가장 긴 연속부분의 값을 출력한다.
data[i][j], data[i][j+1] = data[i][j+1], data[i][j]
,
data[i][j], data[i+1][j] = data[i+1][j], data[i][j]
를 통하여 상하좌우 (인접한 요소)를 서로 바꾸고 그 때마다 가장 긴 연속부분의 값을 찾아서 가장 긴 연속부분을 가진 값을 출력한다.
코드💻
def check(data):
result = 1
for i in range(len(data)):
cnt = 1
for j in range(1, n):
if data[i][j] == data[i][j-1]:
cnt += 1
else:
cnt = 1
if cnt > result:
result = cnt
cnt = 1
for j in range(1, n):
if data[j][i] == data[j-1][i]:
cnt += 1
else:
cnt = 1
if cnt > result:
result = cnt
return result
n = int(input())
data = []
result = 0
for i in range(n):
data.append(list(input()))
for i in range(n):
for j in range(n):
if j < n-1:
data[i][j], data[i][j+1] = data[i][j+1], data[i][j]
cnt = check(data)
if cnt >= result:
result = cnt
data[i][j], data[i][j+1] = data[i][j+1], data[i][j]
if i < n-1:
data[i][j], data[i+1][j] = data[i+1][j], data[i][j]
cnt = check(data)
if cnt >= result:
result = cnt
data[i][j], data[i+1][j] = data[i+1][j], data[i][j]
print(result)