본문 바로가기
알고리즘/완전탐색

[백준][Python] 3085번 사탕 게임

by 임짠짠 2022. 7. 28.
반응형
 

3085번: 사탕 게임

예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.

www.acmicpc.net

 

 

코드

import sys 

def check(color):
	count = 1
	
	for i in range(n):
		cnt = 1
		for j in range(n-1):
			if color[i][j] == color[i][j+1]:
				cnt += 1
			else:
				cnt = 1
			count = max(count,cnt)


	for j in range(n):
		cnt = 1
		for i in range(n-1):
			if color[i][j] == color[i+1][j]:
				cnt += 1
			else:
				cnt = 1
			count = max(count,cnt)
	return count

n = int(input())
color = []
for _ in range(n):
	color.append(list(sys.stdin.readline()))
max_cnt = 0
for i in range(n):
	for j in range(n):
		if j+1 < n:
			color[i][j],color[i][j+1] = color[i][j+1],color[i][j]
			max_cnt = max(max_cnt,check(color))
			color[i][j],color[i][j+1] =color[i][j+1],color[i][j]

		if i+1 < n:
			color[i][j],color[i+1][j] = color[i+1][j],color[i][j]
			max_cnt = max(max_cnt,check(color))
			color[i][j],color[i+1][j] = color[i+1][j],color[i][j]

print(max_cnt)

 

설명

파이썬에서 두 변수 값을 바꾸려면 

a,b = b,a

이렇게만 해주면 된다.

 

for문을 이용해서 인접한 사탕끼리 서로 자리를 바꿔준다. 바꾼 후 check 함수에서 행과 열에 같은 색으로 이루어져 있는 가장 긴 연속 부분을 찾는다. 그 다음에 다시 두 사탕을 바꿔서 원래 상태로 되돌려준다. 

반응형

댓글