일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Github
- 프로그래머스
- 투포인터
- backtracking
- 백준
- 머신러닝
- two pointer
- 정렬
- 재귀함수
- 완전탐색
- 1일1솔
- 신나는함수실행
- python3
- 코딩테스트
- CS
- 알고리즘
- Loss
- BF
- Virtual Memory
- 재귀
- 브루트포스
- sort
- 파이썬
- ML
- dfs
- Algorithm
- 백트래킹
- 코테
- Python
- OS
Archives
- Today
- Total
이것저것 공부 기록하기
[Algorithm] 1일1솔 - 백준 1018 체스판 다시 칠하기 (python3) 본문
문제링크
https://www.acmicpc.net/problem/1018
문제설명
[아이디어1]
N x M 판을 전체 경우의 수로 돌려야 한다. 그러기 위해서는 인덱스가 8을 넘지 않도록 조정을 해줘야 한다.
9x9에서 움직여서 조사할 수 있는 경우의 수는 2x2 = 4개이며,
10x10에서 움직여서 조사할 수 있는 경우의 수는 3x3 = 9개이고,
11x11에서 움직여서 조사할 수 있는 경우의 수는 4x4 = 16개이다.
따라서 i는 N-7의 범위에서, j는 M-7의 범위에서 움직인다.
이후에 전체 경우의 수를 다 돌면서 [아이디어2] 처럼 W로 시작한 경우, B로 시작한 경우를 나눠서 판단한다.
[아이디어2]
(k+l) % 2 == 0을 사용해서 행과 열의 인덱스의 합이 짝수인 경우, 일정한 한 색을 갖게 되고, 홀수인 경우에도 다른 일정한 한 색을 갖게 한다.
문제풀이
N, M = map(int, input().split())
board = [input() for _ in range(N)]
repair = []
for i in range(N-7):
for j in range(M-7):
first_W, first_B = 0,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 += 1
else:
first_B += 1
else:
if board[k][l] != 'B':
first_W += 1
else:
first_B += 1
repair.append(first_W)
repair.append(first_B)
print(min(repair))
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[Algorithm] 1일1솔 - 백준 2751 수 정렬하기2 (python3, PyPy3) (0) | 2022.01.06 |
---|---|
[Algorithm] 1일1솔 - 백준 1436 영화감독 숌 (python3) (0) | 2022.01.05 |
[Algorithm] 1일1솔 - 백준 7568 덩치 (python3) (0) | 2022.01.03 |
[Algorithm] 1일1솔 - 백준 11729 하노이의 탑 이동순서 (python3) (0) | 2022.01.03 |
[Algorithm] 1일1솔 - 백준2447 별찍기-10 (python3) (0) | 2021.12.31 |
Comments