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 | 31 |
Tags
- react-redux
- 기초100제
- 코드업
- Java
- 파이썬
- 타입스크립트
- OS
- C++
- 자료구조
- 백준
- Operating System
- js to ts
- CPU 스케줄링
- 공부
- 리덕스장바구니
- 알고리즘
- error
- 토이프로젝트
- codeup
- 일상
- web
- memory
- 협업
- 분할메모리할당
- Redux
- Spring
- 프로그래머스
- 정렬
- 스프링
- react
Archives
- Today
- Total
감자튀김 공장🍟
[백준/1018] 체스판 다시 칠하기 (with 파이썬) 본문
반응형
✔ 문제
✔ 풀이
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
board = [list(map(str, input())) for _ in range(n)]
res = []
for a in range(n-7):
for b in range(m-7):
w_count = 0
b_count = 0
for i in range(a, a+8):
for j in range(b, b+8):
if (i + j) % 2 == 0: # 0,1로 구분해 b,w 중 어떤 것을 색칠할 것인지 구분
if board[i][j] != 'W': # B이면
w_count += 1 # W로 색칠
else: # W이면
b_count += 1 # B로 색칠
else:
if board[i][j] != 'W': # B이면
b_count += 1 # B로 색칠
else: # W이면
w_count += 1 # W로 색칠
res.append(w_count) # W로 시작 시 경우의 수
res.append(b_count) # B로 시작 시 경우의 수
print(min(res))
✔ 설명
전체 체스판에서 8x8 체스판을 만들어야 하므로 4중 for문이 필요하다.
if (i + j) % 2 == 0:
이 조건문을 통해 다시 색칠 해야하는 B, W를 구분하여 색칠할 수 있다.
1. 만약 해당 조건문의 결과가 0인 경우 (짝수), 시작점의 색깔과 같아야 하며 해당 값이 w인지 아닌지 구분해 w_count와 b_count를 증가시킨다.
ex) 조건문이 짝수인 경우 >> 해당 값이 B이면 W로 색칠해야함 >> w_count += 1
ex) 조건문이 짝수인 경우 >> 해당 값이 W이면 B로 칠해야함 >> b_count += 1
2. 만약 해당 조건문의 결과가 1인 경우 (홀수), 시작점의 색깔과 달라야하며 해당 값이 w인지 아닌지 구분해 w_count와 b_count를 증가시킨다.
ex) 조건문이 홀수인 경우 >> 해당 값이 B이면 B로 색칠해야함 >> b_count += 1
ex) 조건문이 홀수인 경우 >> 해당 값이 W이면 W로 칠해야함 >> w_count += 1
✔ 후기
for문을 4개 쓰는 것까지는 생각했는데 if 조건문을 잘 생각할 수 없었다.
다른 사람들이 푼 코드를 참고해봤는데도 이해가 완벽하게 안된다.
저녁에 다시 풀어봐야겠다..🥺
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[백준/10815] 숫자 카드 (with 파이썬) (0) | 2022.11.30 |
---|---|
[백준/1436] 영화감독 숌 (with 파이썬) (0) | 2022.11.29 |
[백준/7568] 덩치 (with 파이썬) (0) | 2022.11.27 |
[백준/2231] 분해합 (with 파이썬) (0) | 2022.11.26 |
[백준/2798] 블랙잭 (with 파이썬) (0) | 2022.11.25 |
Comments