본문 바로가기

Coding test

[백준/3085/파이썬] 사탕게임 - 브루트포스


소스코드

n = int(input())
board = []
ans =0

for _ in range(n):
  candy = list(map(str,input()))
  board.append((candy))

def count_candy(board): #개수세는 함수
  N = len(board)
  max_candy = 1
  for i in range(N):
    cnt = 1
    for j in range(1,N):
      if board[i][j] == board[i][j-1]:
        cnt += 1
      else :
        cnt = 1      
      if max_candy < cnt :
        max_candy = cnt
    cnt = 1    
    for j in range(1,N):
      if board[j][i] == board[j-1][i]:
        cnt += 1
      else :
        cnt = 1      
      if max_candy < cnt :
        max_candy = cnt
  return max_candy

for i in range(n):
  for j in range(n):
    if j + 1 < n:  #가로로 바꿔가며
      board[i][j],board[i][j+1] = board[i][j+1],board[i][j]
      temp = count_candy(board)
      if temp > ans :
        ans = temp
      board[i][j],board[i][j+1] = board[i][j+1],board[i][j]
    
    if i + 1 < n:  #세로로 바꿔가며
      board[i][j],board[i+1][j] = board[i+1][j],board[i][j]
      temp = count_candy(board)
      if temp > ans :
        ans = temp
      board[i][j],board[i+1][j] = board[i+1][j],board[i][j]
print(ans)

알고리즘

brute force 알고리즘은 진짜 무식하게 FOR문 다 돌려서 해보면 된다는 것을 알았다.

1. 갯수를 세는 함수를 만든 다음

2. 가로로 바꿔가며 갯수를 세고, 세로로 바꿔가며 갯수를 세고

3. 원래대로 되돌려 놓는다.