[백준] 1018 - 체스판 다시 칠하기
Python 3 코드
import sys
input = sys.stdin.readline
# N과 M(8 ≤ N, M ≤ 50) 입력
N, M = map(int, input().split())
# 가능한 체스판 저장
chess_board= ["WBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBW",
"BWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWBBWBWBWBWWBWBWBWB"]
# 보드 입력
board = [input().rstrip() for _ in range(N)]
# 다시 칠해야 하는 정사각형 개수 저장
check=[]
# 체스판 선택 (8*8 모든 경우 확인)
for i in range(0, N-7):
for j in range(M-7):
# 문자열로 저장
str=""
for k in range(i, i+8):
str += board[k][j:j+8]
# 가능한 체스판 2가지
c_1, c_2 = 0, 0
# 8*8 체스판, 가능한 체스판 문자 비교
for c in range(64):
if str[c]!=chess_board[0][c]:
c_1+=1
if str[c]!=chess_board[1][c]:
c_2+=1
check.append(min(c_1, c_2))
print(min(check))
내 풀이 방법
-
가능한 체스판 (2가지) 문자열로 저장
-
8*8 크기로 고르는 모든 경우 확인
- str 변수에 8*8 보드판 데이터 문자열로 저장
-
(0~63) 반복문 돌면서 체스판이랑 보드판 데이터 비교
- c_1, c_2 비교하여 더 작은 값 check 리스트에 저장
-
check 리스트 중 최솟값 출력
정답은 맞긴 했지만 가능한 체스판을 문자열로 저장해놓고 하는것보다,, 좋은 방법이 있을 것 같다 👀
다른 풀이도 찾아보기!!
Author And Source
이 문제에 관하여([백준] 1018 - 체스판 다시 칠하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ryujm/백준-1018저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)