https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
첫 번째 입력으로 보드 크기를 입력받습니다.
두 번째 입력으로 체스판의 색상을 입력받습니다.
체스판은 이런 식으로 검은색 ( B ) 와 흰색 ( W ) 가 번갈아 가며 체크무늬로 이루어진 8*8 크기입니다.
이 두 가지 케이스를 가지고
입력받은 체스판을 검사하고 가장 적은 색상을 바꾸는 경우를 출력하면 됩니다.
[ 1 ~ 8 ] 체스판이 될 수 있는 2가지 경우를 정의해줍니다.
[ 9 ] 보드 크기를 입력받습니다.
[ 10 ~ 12 ] T_ 리스트에 보드 색상 정보를 입력받습니다.
[ 14 ~ 15 ] x 축과 y축으로 한 칸씩 이동하며 검사할 거기 때문에 기존 체스판 크기인 8 * 8 에서 초과하는 크기를 입력해줍니다.
[ 18 ] search 함수를 만들고 x, y 인자를 받습니다.
[ 20 ~ 26 ] for 문을 사용하여 0, 0지점부터 8 * 8 크기를 검사해줍니다. 원점은 인자로 받은 x, y 값으로 증가 시켜주게 되고 0, 0 이 검은색 일 때와 흰색일 때 두 가지를 동시에 검사해줍니다.
for문을 다 돌고 난 뒤 검은색과 흰색 중 작은 값을 Result_lst 에 추가해줍니다.
[ 28 ~ 34 ] 처음에 정했던 초과분의 x 와 y 값을 for문을 사용해서 search 함수에 인자로 넣어줍니다.
계산량을 줄이기 위해서 만약에 Result_lst에 0이 있다면 검색을 종료합니다.
[ 36 ] Result_lst 에서 가장 작은값을 출력합니다.
B_ = [("B","W","B","W","B","W","B","W"),("W","B","W","B","W","B","W","B"),
("B","W","B","W","B","W","B","W"),("W","B","W","B","W","B","W","B"),
("B","W","B","W","B","W","B","W"),("W","B","W","B","W","B","W","B"),
("B","W","B","W","B","W","B","W"),("W","B","W","B","W","B","W","B"),]
W_ = [("W","B","W","B","W","B","W","B"),("B","W","B","W","B","W","B","W"),
("W","B","W","B","W","B","W","B"),("B","W","B","W","B","W","B","W"),
("W","B","W","B","W","B","W","B"),("B","W","B","W","B","W","B","W"),
("W","B","W","B","W","B","W","B"),("B","W","B","W","B","W","B","W")]
n, m = map(int, input().split())
T_ =[]
for i in range(n):
T_.append(input())
x_max = len(T_[0])-8
y_max = len(T_)-8
Result_lst = []
def search(x,y):
B_Count, W_Count = 0,0
for k in range(8):
for j in range(8):
if T_[k+x][j+y] != B_[k][j]:
B_Count +=1
elif T_[k+x][j+y] != W_[k][j]:
W_Count +=1
Result_lst.append(min(B_Count,W_Count))
for i in range(x_max+1):
for j in range(y_max+1):
search(j,i)
if Result_lst.count(0) > 0:
break
if Result_lst.count(0) > 0:
break
print(min(Result_lst))
'알고리즘 > Solved_Silver' 카테고리의 다른 글
[Python Silver V 11650] 좌표 정렬하기 (0) | 2023.03.22 |
---|---|
[Python Silver V 1181] 단어 정렬 (0) | 2023.03.22 |
[Python Silver IV 2839] (0) | 2023.03.16 |
[Python Silver IV 9012] (0) | 2023.03.16 |
[Python Silver V 1193] (0) | 2023.03.09 |