링크 : https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
- 문제
- 소요시간: 30분 실패(참고)
- 설계하기(접근방법)
1. 입력받기
체스판을 입력받는다
2. 구현하기
체스판 문자열을 8*8 형태로
첫 글자가 B
첫 글자가 W
인 경우로 나누어 완전탐색으로 구현한다
3. 출력하기
최소값을 출력한다
- 코드(출력)
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
chess_board = []
result = []
for i in range(n):
chess_board.append(input().rstrip())
for i in range(n - 7):
for j in range(m - 7):
check1 = 0
check2 = 0
for a in range(i ,i + 8):
for b in range(j, j + 8):
if (a + b) % 2 == 0:
if chess_board[a][b] == 'B' :
check1 += 1
if chess_board[a][b] == 'W' :
check2 += 1
else:
if chess_board[a][b] == 'W' :
check1 += 1
if chess_board[a][b] == 'B' :
check2 += 1
result.append(min(check1, check2))
print(min(result))
- 얻어갈 부분
1. 번갈아 가면서 문자열이 나타나는 경우, 리스트[a][b]에서 a+b가 짝수일 때, 홀수일 때로 구분할 수도 있다
2. 최소값을 구하는 경우 리스트에 다 넣은 후 min()을 출력하게 하면 편하다
'알고리즘(백준) > 브루트 포스' 카테고리의 다른 글
[알고리즘/브루트 포스] 1182번 : 부분 수열의 합 - python (1) | 2024.01.15 |
---|---|
[알고리즘/브루트 포스] 2503번 : 숫자 야구 - python (0) | 2024.01.15 |
[알고리즘/브루트 포스] 1436번 : 영화감독 숌 - python (0) | 2024.01.12 |
[알고리즘/브루트 포스] 15721번 : 번데기 - python (0) | 2023.06.08 |
[알고리즘/브루트 포스] 18312번 : 시각 - python (0) | 2023.06.01 |