본문 바로가기

Algorithm_BOJ(백준)/완전탐색(Brute Force)

[백준 1018 python파이썬] 체스판 다시 칠하기

728x90
반응형

문제 링크

www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

문제 접근

// 접근: 탐색하면서 바뀌는 칸의 수를 세야 한다.

 

 

 

 

 

 

 

 

 

 

 





 

문제 풀이

// 풀이: 완전탐색으로 8*8 영역 나누고,

//나눈 영역에서 첫번째 칸이 검은색/ 흰색일 경우 나누어서 최소값 비교

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

주의

 

 

 

 

개념

 

 

 

 

 

소스코드

n,m = map(int,input().split())
lst = [list(input()) for_ in range(n)]
minn = 2500
fori in range(n-7):
  forj in range(m-7):
c=0
    
    # 첫번째 검음색
    forp in range(i,i+8):
      forq in range(j,j+8):
        ifp%2== 0:
          ifq%2== 0 andlst[p][q]!='B': 
c+=1
          ifq%2!= 0 andlst[p][q]!='W': 
c+=1
        else:
          ifq%2!= 0 andlst[p][q]!='B': 
c+=1
          ifq%2== 0 andlst[p][q]!='W': 
c+=1
minn = min(minn,c)
      # 첫번째 흰색
c=0
    forp in range(i,i+8):
      forq in range(j,j+8):
        ifp%2== 0:
          ifq%2!= 0 andlst[p][q]!='B': 
c+=1
          ifq%2== 0 andlst[p][q]!='W': 
c+=1 
          
        else:
          ifq%2== 0 andlst[p][q]!='B': 
c+=1
          ifq%2!= 0 andlst[p][q]!='W': 
c+=1
minn = min(minn,c)  
print(minn) 
반응형