728x90
https://www.acmicpc.net/problem/1018
문제 분석
- 완전탐색문제
- 배열을 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
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 - 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 |