반응형
백준 1018번 풀이
문제풀러가기
https://www.acmicpc.net/problem/1018
풀이
1. 8*8칸씩 범위를 잡고 다시 칠해야 되는 부분의 갯수를 구한다.
1-1 경우의 수
1) N과 M이 8보다 클때
-> 인덱스를 1씩 더해, 8*8사각형을 옮겨 가며 갯수를 구해주면 된다.
더보기
예를 들어, M=9인 경우
처음에는 0~7까지 다시칠해야 되는 갯수를 구한다.
그 다음 1을 더해주어 1~8까지 다시 칠해야 되는 갯수를 구한다.
그 다음 1을 또 더해주어 2~9가지 다시 칠해야 되는 갯수를 구한다.
(N도 마찬가지.)
2)WB 순서
-> 'W'가 맨처음 시작할때 다시 칠해야 되는 갯수
->'B'가 맨 처음 시작할때 다시 칠해야 되는 갯수
2. 구한 갯수 마다 리스트에 넣은 후, 제일 작은 숫자를 출력한다.
코드
N,M = map(int, input().split())
arr = []
arr_min = []
for i in range (N): #체스판 한줄씩, 리스트에 넣기
a = input()
arr.append(a)
#N과 M이 8보다 클 시, 큰 숫자 만큼 1씩 더해줌.
for i in range (N-7):
for j in range (M-7):
num1 = 0
num2 = 0
for a in range(i, i+8):
for b in range(j, j+8):
if (a+b)%2 == 0:
if arr[a][b] != 'W': #W가 아닐때
num1+=1 #W로 칠해주는 갯수
else: #B가 아닐때
num2+=1 #B로 칠해주는 갯수
else:
if arr[a][b] != 'B':
num1+=1
else:
num2+=1
arr_min.append(num1) #체스판이 W로 시작할때 경우의 수
arr_min.append(num2) #체스판이 B로 시작할때 경우의 수
print(min(arr_min))
반응형
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 백준2108번 풀이/파이썬 반올림, 원소 개수 구하기(파이썬) (0) | 2021.06.01 |
---|---|
코딩테스트 준비 - 백준10989번 정렬3 풀이 (파이썬) (0) | 2021.05.31 |
코딩테스트 준비- 백준 2751번:병합정렬,리스트 정렬 예제(파이썬) (0) | 2021.05.27 |
코딩테스트 준비 - 백준 1463번 영화감독 숌 풀이(파이썬) (0) | 2021.05.27 |
코딩테스트 준비 - 백준 11653번 소인수분해 풀이(파이썬) (0) | 2021.05.25 |
댓글