티스토리 뷰

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)
공지사항
최근에 올라온 글
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함