백준 3085 : 사탕 게임 (파이썬
정답 코드
import sys
input = sys.stdin.readline
def check(arr):
n = len(arr)
answer = 1
for i in range(n):
# 열(col) 순회하면서 연속되는 숫자 세기
cnt = 1
for j in range(1, n):
if arr[i][j] == arr[i][j - 1]:
# 이전 것과 같다면 cnt에 1 더하기
cnt += 1
else:
# 이전과 다르다면 다시 1로 초기화
cnt = 1
# for문을 돌면서 비교해 현재 cnt가 더 크다면 answer 갱신하기
if cnt > answer:
answer = cnt
# 행(row) 순회하면서 연속되는 숫자 세기
cnt = 1
for j in range(1, n):
if arr[j][i] == arr[j - 1][i]:
# 이전 것과 같다면 cnt에 1 더하기
cnt += 1
else:
# 이전과 다르다면 다시 1로 초기화
cnt = 1
# 비교해서 현재 cnt가 더 크다면 answer 갱신하기
if cnt > answer:
answer = cnt
return answer
n = int(input())
arr = [list(input()) for _ in range(n)]
answer = 0
for i in range(n):
for j in range(n):
# n보다 작으면 열을 바꿀 수 있다
if j + 1 < n:
# 인점한 것과 바꾸기
arr[i][j], arr[i][j + 1] = arr[i][j + 1], arr[i][j]
# check는 arr에서 인점한 것과 바꿨을 때 가장 긴 연속한 부분을 찾아내는 함수이다
temp = check(arr)
if temp > answer:
answer = temp
# 바꿨던 것을 다시 원래대로 돌려놓기
arr[i][j], arr[i][j + 1] = arr[i][j + 1], arr[i][j]
# n보다 작으면 행을 바꿀 수 있다
if i + 1 < n:
# 인점한 것과 바꾸기
arr[i][j], arr[i + 1][j] = arr[i + 1][j], arr[i][j]
# check는 arrd에서 인점한 것과 바꿨을 때 가장 긴 연속한 부분을 찾아내는 함수이다
temp = check(arr)
if temp > answer:
answer = temp
# 바꿨던 것을 다시 원래대로 돌려놓기
arr[i][j], arr[i + 1][j] = arr[i + 1][j], arr[i][j]
print(answer)
Author And Source
이 문제에 관하여(백준 3085 : 사탕 게임 (파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yibangwon/백준-3085-사탕-게임-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)