코딩테스트/백준

[백준][Python] 1018. 체스판 다시 칠하기

내만 2022. 7. 15. 18:02
728x90
반응형

 

 

 

 

 

 

🙆‍♂️문제


 

 

 

🙋‍♂️풀이


약간 끔찍해보이지만 침착하게

문제 요약 : 먼저 체스판의 규격을 입력받습니다.그리고 체스판이 입력되는데 W와 B로 표현됩니다. 이 때 임의의 8x8 체스판을 뽑아 체스판 규칙에 맞지 않는 (다시 색을 칠해야 하는) 부분의 최소의 수를 구해야 합니다.

 

🚀 입력받기


n,m = map(int,input().split())
chess=[list(input()) for _ in range(n)]

먼저 체스판의 n x m 규격을 입력받습니다.

그리고 체스판의 모양을 입력받는데 2차원 리스트로 입력받습니다.

 

🚀 8x8 올바른 체스판


startW=[];startB=[]
for i in range(8):
    startW.append([])
    startB.append([])
    for j in range(8):
        x=i+1;y=j+1
        if ((x%2!=0)&(y%2!=0)) | ((x%2==0)&(y%2==0)):
            startW[i].append("W")
            startB[i].append("B")
        elif ((x%2!=0)&(y%2==0)) | ((x%2==0)&(y%2!=0)):
            startB[i].append("W")
            startW[i].append("B")

비교할 체스판을 만들었습니다.

 

🚀 잘못된 체스판 찾기


cnts=[]
for i in range(n-7):
    for j in range(m-7):
        count1=0;count2=0
        for k in range(8):
            for q in range(8):
                if chess[i+k][j+q] != startW[k][q]:
                    count1+=1
                elif chess[i+k][j+q] != startB[k][q]:
                    count2+=1
        cnts.append(count1)
        cnts.append(count2)

입력받은 체스판에서 8x8 체스판을 추출하여 틀린 값들을 cnts 배열에 저장합니다.

W로 시작하는 체스판인 경우와 B로 시작하는 체스판의 경우를 비교하여 모두 cnts 배열에 저장합니다.

 

🚀 출력하기


print(min(cnts))

min함수를 사용하여 cnts 배열 중 최소값을 출력합니다.

 

728x90
반응형