[백준] 3085번 (python 파이썬) 사탕게임
2021. 3. 23. 18:27ㆍ발돋움/알고리즘
728x90
반응형


728x90
n = int(input())
board = []
for _ in range(n):
board.append(list(input()))
def check(starti, endi, startj, endj, maxn):
cnt = 1
if starti == endi: #가로로 바꿨을시
for idx in range(n - 1): #가로
if board[starti][idx] == board[starti][idx + 1]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
for idx in range(n - 1): #세로 1
if board[idx][startj] == board[idx + 1][startj]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
for idx in range(n - 1): #세로 2
if board[idx][endj] == board[idx + 1][endj]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
else: #세로로 바꿨을시
for idx in range(n - 1): #세로
if board[idx][startj] == board[idx + 1][startj]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
for idx in range(n - 1): # 가로 1
if board[starti][idx] == board[starti][idx + 1]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
for idx in range(n - 1): # 가로 2
if board[endi][idx] == board[endi][idx + 1]:
cnt += 1
if maxn < cnt:
maxn = cnt
else:
cnt = 1
cnt = 1
return maxn
maxn = 0
n_range = n - 1
for i in range(n):# 세로
for j in range(n): #가로
if j < n_range: #가로로 바꾸기
board[i][j], board[i][j + 1] = board[i][j + 1], board[i][j]
temp = check(i, i, j, j + 1, maxn)
board[i][j], board[i][j + 1] = board[i][j + 1], board[i][j]
if temp > maxn:
maxn = temp
if i < n_range: #세로로 바꾸기
board[i][j], board[i + 1][j] = board[i + 1][j], board[i][j]
temp = check(i, i + 1, j, j, maxn)
board[i][j], board[i + 1][j] = board[i + 1][j], board[i][j]
if temp > maxn:
maxn = temp
print(maxn)
연속되는 알파벳들의 무한 카운트를 막기위해 cnt를 한 행이나 열이 끝날때 꼭 초기화 해줘야한다.
728x90
반응형
'발돋움 > 알고리즘' 카테고리의 다른 글
| [백준] 1107번 (python 파이썬) 리모컨 (0) | 2021.03.23 |
|---|---|
| [백준] 1476번 (python 파이썬) 날짜계산 (0) | 2021.03.23 |
| [백준] 15655번 (python 파이썬) N과 M(6) (0) | 2021.03.23 |
| [백준] 15650번 (python 파이썬) N과 M(2) (0) | 2021.03.23 |
| [백준] 15651번 (python 파이썬) N과M(3) (0) | 2021.03.23 |