본문 바로가기

알고리즘/백준 문제풀이

백준-1018(체스판 다시 칠하기, python)

728x90

https://www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

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

www.acmicpc.net

문제 분석

  • 완전탐색문제
  • 배열을 8칸씩 잘라서 w로 시작할때 다시칠해야하는 경우,  b로 시작할때 다시칠해야하는 경우로 나눔
  • 모든 경우의 수를 구한 후 제일 작은 경우의 수를 출력

 

 

정답 코드

n, m = map(int, input().split(" "))
#원래의 판 저장
original = []
#바뀐 체스판의 개수
count = []

for _ in range(n):
    original.append(input())

#input 값의 범위가 매우 작으므로 4중 for문 활용
for a in range(n-7):
    for b in range(m-7):
        #w로 시작할 경우 다시칠할 개수
        index1 = 0
        #b로 시작할 경우 다시칠할 개수
        index2 = 0
        for i in range(a, a+8):
            for j in range(b, b+8):
                if(i+j) % 2 == 0:
                    if original[i][j] != 'W':
                        index1 += 1
                    if original[i][j] != 'B':
                        index2 += 1
                else:
                    if original[i][j] != 'B':
                        index1 += 1
                    if original[i][j] != 'W':
                        index2 += 1
        count.append(min(index1, index2))
print(min(count))

사실 혼자 푼건 아니고 정답코드를 확인했다 다음에 다시 풀어볼 예정이다.

https://bambbang00.tistory.com/43

 

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

문제 지민이는 자신의 저택에서 MN개의 단위 정사각형으로 나누어져 있는 M*N 크기의 보드를 찾았다. 어떤 정사각형은 검은색으로 칠해져 있고, 나머지는 흰색으로 칠해져 있다. 지민이는 이 보

bambbang00.tistory.com

 

'알고리즘 > 백준 문제풀이' 카테고리의 다른 글

백준 - 2164(카드2, python)  (0) 2023.05.24
백준 - 11050(이항 계수, python)  (0) 2023.05.24
백준 14501- 퇴사(kotlin)  (0) 2023.02.08
백준 9095번 - 1, 2, 3 더하기  (0) 2023.02.08
백준 2606-바이러스(Kotlin)  (0) 2023.02.06