[白俊3085号]キャンディゲーム-PiSUN
質問リンク:https://www.acmicpc.net/problem/3085
尚根は子供の頃、「Bomboni」ゲームが好きだった.
最初はN×砂糖をnサイズのところに入れる.キャンディの色が違うかもしれません.上根は隣接するキャンディの色の異なる格子を2つ選んだ.それから均一な四角い格子の中のキャンディを交換します.今では、すべての人が同じ色からなる最長の連続部分(行または列)を選択し、すべてのキャンディを食べてしまいます.
あなたがあなたにあげた砂糖が満たされたとき、プログラムを書いて、あなたが食べられる砂糖の最大個数を求めます.
最初の行は、プレートのサイズNを与える.(3 ≤ N ≤ 50)
次のN行は、板紙に充填されたキャンディの色を与える.赤はC、青はP、緑はZ、黄色はYです.
隣接する2つのキャンディ色の異なる格子が存在する入力のみが与えられる.
1行目は、食べられるキャンディの最大個数を出力します.
質問する
尚根は子供の頃、「Bomboni」ゲームが好きだった.
最初はN×砂糖をnサイズのところに入れる.キャンディの色が違うかもしれません.上根は隣接するキャンディの色の異なる格子を2つ選んだ.それから均一な四角い格子の中のキャンディを交換します.今では、すべての人が同じ色からなる最長の連続部分(行または列)を選択し、すべてのキャンディを食べてしまいます.
あなたがあなたにあげた砂糖が満たされたとき、プログラムを書いて、あなたが食べられる砂糖の最大個数を求めます.
入力
最初の行は、プレートのサイズNを与える.(3 ≤ N ≤ 50)
次のN行は、板紙に充填されたキャンディの色を与える.赤はC、青はP、緑はZ、黄色はYです.
隣接する2つのキャンディ色の異なる格子が存在する入力のみが与えられる.
しゅつりょく
1行目は、食べられるキャンディの最大個数を出力します.
![](https://s1.md5.ltd/image/3e181fa17e5499e6f62aace4e36b403e.png)
n=int(input())
data=[list(input()) for _ in range(n)]
answer=0
# 테이블 전부 체크해주는 함수
def count(arr):
n=len(arr)
answer=1
for i in range(n):
# 가로줄 순회, 연속되는 수 세기
cnt=1
for j in range(1,n):
# 이전과 같다면 +1
if arr[i][j]==arr[i][j-1]:
cnt+=1
#다르면 다시 1로 초기화
else:
cnt=1
#현재 cnt가 더 크면 갱신
if cnt>answer:
answer=cnt
#세로줄 순회, 연속 되는 수 세기
cnt=1
for j in range(1,n):
if arr[j][i]==arr[j-1][i]:
cnt+=1
else:
cnt=1
if cnt>answer:
answer=cnt
return answer
for i in range(n):
for j in range(n):
#가로줄 바꾸기
if j+1<n:
#인접한 것과 바꿈
data[i][j], data[i][j+1]=data[i][j+1], data[i][j]
#바꿨을때 가장 긴 연속 부분 체크
tmp=count(data)
if tmp>answer:
answer=tmp
#바꿨던것 다시 원래대로
data[i][j], data[i][j+1]=data[i][j+1], data[i][j]
#세로줄 바꾸기
if i+1<n:
data[i][j], data[i+1][j]=data[i+1][j], data[i][j]
tmp=count(data)
if tmp>answer:
answer=tmp
data[i][j], data[i+1][j]=data[i+1][j], data[i][j]
print(answer)
これがブルートの原力なんですね…!!Reference
この問題について([白俊3085号]キャンディゲーム-PiSUN), 我々は、より多くの情報をここで見つけました https://velog.io/@boyfromthewell/백준-3085번-사탕-게임-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol