Notice
Recent Posts
Recent Comments
Link
S E P H ' S
[Python] BJ 1018 체스판 다시 칠하기 본문
입력부분
N, M = map(int, input().split())
board = list()
for i in range(N):
board.append(input())
new_board = []
1. 한 줄로 공백으로 주어지는 N,M을 입력받는다.
2. 보드의 정보를 받을 board를 list()로 선언한다.
3. for 문으로 입력을 받는다.
4. new_board 를 다시 칠해야 하는 개수가 담긴 list로 선언
풀이부분
for i in range(N-7):
for j in range(M-7):
first_W = 0
first_B = 0
for k in range(i, i+8):
for l in range(j, j+8):
if (k+l) % 2 == 0:
if board[k][l] != 'W':
first_W = first_W+1
if board[k][l] != 'B':
first_B = first_B+1
else:
if board[k][l] != 'B':
first_W = first_W + 1
if board[k][l] != 'W':
first_B = first_B + 1
new_board.append(first_W)
new_board.append(first_B)
print(min(new_board))
1. 가로, 세로 8*8 크기의 체스판을 새로 잘라내고 다시 칠하겠다 했으므로 8*8 범위 만큼씩 다시 칠해야 하는 정사각형 개수를 세야 한다. 체스판의 N,M이 8보다 크거나 같으므로 최소 한 번은 체크를 하기 때문에 i,j 는 N-7, M-7씩 체크를 한다.
2. 바꿔야 하는 정사각형 개수의 변수 두개 선언
3. i,j 만큼의 체스판 안에서 각 하나하나 ( k, l ) 요소가 W인지 B인지 체크
4. 짝수 인덱스, 홀수 인덱스 일때, 또 그 안에서 B인지 W인지를 체크.
5. new_board에 first_W, first_B를 담고 min 을 출력하여 정답 출력
'Algorithm > BackJoon' 카테고리의 다른 글
[Python] 10163 색종이 (0) | 2021.06.20 |
---|---|
[Python] 1436 영화감독 숌 (0) | 2021.06.16 |
[코딩풀이] - BAEKJOON.1157 단어공부_JAVA (0) | 2021.02.18 |
[코딩풀이] - BAEKJOON.1110 더하기 사이클 (2) | 2020.10.06 |
[코딩풀이] - BAEKJOON.10871 X보다 작은 수 (0) | 2020.10.06 |