Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Unity
- 기초
- 문제풀이
- 오류
- loop
- github
- 시작해요 언리얼 2022
- Algorithm
- DP
- Basic
- w3school
- Class
- W3Schools
- dynamic
- parameter
- String
- Tutorial
- dfs
- UE5
- 파이썬
- python
- 프로그래밍
- c++
- 백준
- Programming
- C#
- 재귀
- Unreal Engine 5
- Material
- guide
Archives
- Today
- Total
행복한 개구리
백준 21.12.28. 1018번 - 체스판 다시 칠하기 본문
N, M = map(int, input().split())
board = []
for _ in range(N):
lineN = list(input())
board.append(lineN)
result = []
for i in range(N - 7):
for j in range(M - 7):
count_W = 0
count_B = 0
for n in range(i, i + 8):
for m in range(j, j + 8):
if (n + m) % 2 == 0: # 짝수칸일때
if board[n][m] != "W":
count_W += 1
if board[n][m] != "B":
count_B += 1
else: # 홀수칸일때
if board[n][m] != "B":
count_W += 1
if board[n][m] != "W":
count_B += 1
result.append(count_W)
result.append(count_B)
print(min(result))
- 문제의 핵심은 지문의 두번째 문단에 있습니다.
- => 이 정의를 따르면 체스판을 색칠하는 경우는 두 가진 뿐이다. 하나는 맨 왼쪽 위 칸이 흰색인 경우, 하나는 검은색인 경우이다.
- 이 말은 탐색을 두가지 상황으로 나누어 진행할 수 있다는 뜻인데, 첫 번째는 맨 왼쪽 위 칸이 흰 색인 경우, 두 번째는 검은색인 경우입니다.
- 이렇게 나누면 첫번째 경우에는 홀수칸은 모두 흰색이어야 하며 짝수칸은 모두 검은색이어야 합니다.
- 두 번째 경우엔 홀수칸은 모두 검은색, 짝수칸은 모두 흰색 이어야 합니다.
- 이에 따라 분기를 나눠줍니다.
- 두 가지 분기에 맞춰 구할 값을 저장해야 하니 흰색으로 바꿔야 하는 경우의 수 count_W와 검은색인 경우의 수 count_B를 만들었습니다.
- 그리고 8*8 배열을 순차적으로 탐색할 수 있는 for i문과 for j 중첩 반복문을 을 만들어 줍니다.
- range가 N-7, M-7인 이유는 8*8배열을 만들어야 하기 때문입니다.
- ex) N = 8, M = 8 이라면 8*8 배열은 1가지 밖에 없으므로 range(1), range(1)이 되며 정상적으로 실행됩니다.
- range가 N-7, M-7인 이유는 8*8배열을 만들어야 하기 때문입니다.
- 그리고 해당 8*8배열 안에서 또 다시 중첩반복문을 사용하여 모든 요소들을 검사합니다.
맨 왼쪽 위 칸이 0,0 - 맨 왼쪽 위칸이 (0,0) 일 때, 홀수칸의 인덱스인 n과 m을 더해도 홀수가 나오므로 조건문으로 짝수칸과 홀수칸을 나눌 수 있습니다.
- 그리고 짝수칸에 흰색, 홀수칸에 검은색을 넣을 때와 짝수칸에 검은색, 홀수칸에 흰색을 넣을 때의 검은색, 흰색 경우의 수를 모두 구하여 각각 더해줍니다.
- 위에서 구해진 검은색과 흰색의 경우의 수는 각각 맨 왼쪽 위 칸이 검은색, 흰색일 때 수정해야할 최소의 경우의 수입니다.
- 이제 결과값을 result 리스트에 추가하여 최솟값을 출력해줍니다.
'Algorithm > BaekJoon' 카테고리의 다른 글
백준 21.12.30. 2750번 - 수 정렬하기 (0) | 2021.12.31 |
---|---|
백준 21.12.29. 1436번 - 영화감독 숌 (0) | 2021.12.29 |
백준 21.12.21. 7568번 - 덩치 (0) | 2021.12.21 |
백준 21.12.21. 2231번 - 분해합 (0) | 2021.12.21 |
백준 21.12.19. 2798번 - 블랙잭 (0) | 2021.12.19 |