[伯俊]3085号-キャンディゲームPython
12538 ワード
質問する
尚根は子供の頃、「Bomboni」ゲームが好きだった.
最初はN×砂糖をnサイズのところに入れる.キャンディの色が違うかもしれません.上根は隣接するキャンディの色の異なる格子を2つ選んだ.それから均一な四角い格子の中のキャンディを交換します.今では、すべての人が同じ色からなる最長の連続部分(行または列)を選択し、すべてのキャンディを食べてしまいます.
あなたがあなたにあげた砂糖が満たされたとき、プログラムを書いて、あなたが食べられる砂糖の最大個数を求めます.
入力
最初の行は、プレートのサイズNを与える.(3 ≤ N ≤ 50)
次のN行は、板紙に充填されたキャンディの色を与える.赤はC、青はP、緑はZ、黄色はYです.
隣接する2つのキャンディ色の異なる格子が存在する入力のみが与えられる.
しゅつりょく
1行目は、食べられるキャンディの最大個数を出力します.
入力例1
右下のみを変更して比較します. の変更部分を含む列と行をチェックすれば、重複する部分を減らすことができます.
尚根は子供の頃、「Bomboni」ゲームが好きだった.
最初はN×砂糖をnサイズのところに入れる.キャンディの色が違うかもしれません.上根は隣接するキャンディの色の異なる格子を2つ選んだ.それから均一な四角い格子の中のキャンディを交換します.今では、すべての人が同じ色からなる最長の連続部分(行または列)を選択し、すべてのキャンディを食べてしまいます.
あなたがあなたにあげた砂糖が満たされたとき、プログラムを書いて、あなたが食べられる砂糖の最大個数を求めます.
入力
最初の行は、プレートのサイズNを与える.(3 ≤ N ≤ 50)
次のN行は、板紙に充填されたキャンディの色を与える.赤はC、青はP、緑はZ、黄色はYです.
隣接する2つのキャンディ色の異なる格子が存在する入力のみが与えられる.
しゅつりょく
1行目は、食べられるキャンディの最大個数を出力します.
入力例1
3
CCP
CCP
PPC
サンプル出力13
入力例24
PPPP
CYZY
CCPY
PPCC
サンプル出力24
入力例35
YCPZY
CYZZP
CCPPP
YCYZC
CPPZZ
サンプル出力34
に答える# N^3 풀이
def check(a,start_row, end_row, start_col, end_col):
n = len(a)
ans = 1
for i in range(start_row, end_row+1):
cnt = 1
for j in range(1,n):
if a[i][j] == a[i][j-1]:
cnt+=1
else:
cnt = 1
if ans<cnt:
ans = cnt
for i in range(start_col, end_col+1):
cnt =1
for j in range(1,n):
if a[j][i] == a[j-1][i]:
cnt+=1
else:
cnt =1
if ans<cnt:
ans = cnt
return ans
n = int(input())
a = [list(input()) for _ in range(n)]
ans = 0
# 상하좌우로 바꿀 수 있는데 왼쪽이랑 위로 바꾸는 방법은 이미 이전단계에서 비교함
# 따라서 오른쪽, 아래쪽만 바꿔서 비교해나간다
for i in range(n):
for j in range(n):
# 열 바꾸기
if j+1<n:
a[i][j],a[i][j+1] = a[i][j+1],a[i][j]
tmp = check(a,i,i,j,j+1)
if ans< tmp:
ans= tmp
a[i][j],a[i][j+1] = a[i][j+1],a[i][j]
# 행 바꾸기
if i+1<n:
a[i][j], a[i+1][j] = a[i+1][j],a[i][j]
tmp = check(a,i,i+1,j,j)
if ans<tmp:
ans = tmp;
a[i][j], a[i+1][j] = a[i+1][j],a[i][j]
print(ans)
整理する右下
Reference
この問題について([伯俊]3085号-キャンディゲームPython), 我々は、より多くの情報をここで見つけました https://velog.io/@tunaman95/백준-3085번-사탕-게임-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol