minzzl
[백준] 1018번 : 체스판 다시 칠하기 - Python 본문
728x90
반응형
문제
https://www.acmicpc.net/problem/1018
풀이
이는 Brute force로 단순 구현 문제이다.
문제를 보면 체스판을 색칠하는 경우는 단 두가지라는 것을 알수 있다, 즉 처음 2차원 배열 arr[8][8]에서 [0][0]이 흰색인 경우와 검은색인 경우이다.
따라서 입력에 따라 한칸씩 이동하며 맨처음이 흰색으로 시작해 체스판을 이룬 배열과 검은색으로 시작해 체스판을 이룬 배열을 각각 비교하며 최소가 되는 경우를 확인하였다.
이를 그림으로 나타내면 다음과 같다.
입력받은 2차원 배열의 각 셀마다를 행방향으로 a-8+1 까지, 열 방향으로 b-8+1 까지 옮겨가며 비교한다.
이를 코드로 나타내면 다음과 같다.
a , b = input().split()
a = int(a)
b = int(b)
check_w = 1000
temp_w = 0
check_b = 1000
temp_b = 0
arr = [input() for _ in range(a)]
check_arr_w = ['WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW','WBWBWBWB','BWBWBWBW']
check_arr_b = ['BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB','BWBWBWBW', 'WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB']
x = 0
y = 0
for x in range(a-8 + 1):
for y in range(b-8 + 1):
temp_w = 0
temp_b = 0
for i in range(8):
for k in range(8):
if arr[i+x][k+y] != check_arr_w[i][k]:
temp_w += 1
if arr[i+x][k+y] != check_arr_b[i][k]:
temp_b += 1
if check_b > temp_b:
check_b = temp_b
if check_w > temp_w:
check_w = temp_w
if check_w > check_b :
print(check_b)
else :
print(check_w)
728x90
반응형
'Algorithm > 백준' 카테고리의 다른 글
[백준] 10610번 : 30 - Python (0) | 2023.02.14 |
---|---|
[백준] 1085번 : 직사각형에서 탈출 - Python (0) | 2022.11.29 |
[백준] 10250번 : ACM 호텔 - Python (0) | 2022.11.16 |