소스 코드
def dfs(i,j,color,cnt):
global min_res
# 8칸 확인
for ii in range(i,i+8):
for jj in range(j,j+8):
# 0,7의 색과 1,0의 색은 같음
if jj != j+7:
if board[ii][jj] == x[color%2]:
color += 1
# 색이 다른 경우 한 cnt+1
else:
color += 1
cnt += 1
else:
if board[ii][jj] != x[color%2]:
cnt += 1
if min_res > cnt:
min_res = cnt
return
# 체스판 크기
N,M = map(int,input().split())
# 체스판
board = [list(map(str,input())) for _ in range(N)]
# 최소 값
min_res = 64
# 흰 검 이동
x = ['W','B']
# 8x8 체스판 특정하기
for q in range(N-7):
for w in range(M-7):
# 체스판의 시작점(0,0)의 색도 바꿀 수 있음
# q,w,색,몇 번 색칠했는지
dfs(q,w,0,0)
dfs(q,w,1,0)
print(min_res)
해결 방법
1. dfs를 사용하여 문제 해결
2. 체스판의 시작 위치는 0 <= i < N-7 / 0 <= j < M-7 이다.
3. 체스판의 시작 위치의 색도 바꿀 수 있다.
느낀 점
빠른 문제 해결을 위해서는 정확한 조건을 정하는 것이 핵심!
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 안전 영역 - PYTHON #2468 (0) | 2021.02.19 |
---|---|
[BOJ/백준 코딩] 미로 만들기 - PYTHON #1347 (0) | 2021.02.19 |
[BOJ/백준 코딩] 꽃길 - PYTHON #14620 (0) | 2021.02.15 |
[BOJ/백준 코딩] 이동하기 - PYTHON #11048 (0) | 2021.02.14 |
[BOJ/백준 코딩] 상근이의 여행 - PYTHON #9372 (0) | 2021.02.13 |