티스토리 뷰
https://www.acmicpc.net/problem/3085
3085번: 사탕 게임
문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하
www.acmicpc.net
import sys
N = int(sys.stdin.readline())
board = [list(map(str, input())) for _ in range(N)]
res = 0
def check(board):
cnt = 0
for i in range(N):
cnt_row = 1
cnt_col = 1
for j in range(N-1):
if board[i][j] == board[i][j+1]:
cnt_row += 1
else:
cnt = max(cnt, cnt_row)
cnt_row = 1
if board[j][i] == board[j+1][i]:
cnt_col += 1
else:
cnt = max(cnt, cnt_col)
cnt_col = 1
cnt = max(cnt, cnt_row, cnt_col)
return cnt
for i in range(N):
for j in range(N-1):
if board[i][j] != board[i][j+1]:
tmp = board[i][j]
board[i][j] = board[i][j+1]
board[i][j+1] = tmp
res = max(res, check(board))
tmp = board[i][j]
board[i][j] = board[i][j+1]
board[i][j+1] = tmp
if board[j][i] != board[j+1][i]:
tmp = board[j][i]
board[j][i] = board[j+1][i]
board[j+1][i] = tmp
res = max(res, check(board))
tmp = board[j][i]
board[j][i] = board[j+1][i]
board[j+1][i] = tmp
print(res)
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1912 : 연속합 - Python (0) | 2020.04.23 |
---|---|
[백준] 1932 : 정수 삼각형 - Python (0) | 2020.04.21 |
[백준] 1463 : 1로 만들기 - Python (0) | 2020.04.20 |
[백준] 5585 : 거스름돈 - Python (0) | 2020.04.17 |
[백준] 2309 : 일곱 난쟁이 - Python (0) | 2020.04.17 |