본문 바로가기
알고리즘/baekjoon

[알고리즘/baekjoon] 1018_체스판 다시 칠하기(python)

by 천뿌니 2021. 10. 22.
728x90

문제

https://www.acmicpc.net/problem/1018

 

1018번: 체스판 다시 칠하기

첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.

www.acmicpc.net

# 문제의 핵심은 체스판 시작의 색깔이 흰색인 경우와 검은색인 경우이다.
# 체스판은 흰색과 검은색 번갈아가며 체크무늬를 이뤄야 한다.
# 보드판을 잘라서, 체크무늬가 되도록 색을 고치는 최솟값을 찾는 것이다.

 

정답

- i와 j의 인덱스로 접근하면 규칙적인 모습이 보인다.

(0,0) 짝수 (1,0) 홀수 (2,0) 짝수
(0,1) 홀수 (1,1) 짝수 (2,1) 홀수
(0,2) 짝수 (1,2) 홀수 (2,2) 짝수

- 핵심은 첫 if문에서 인덱스 합이 짝수이면 시작점과 같은 색이어야 하는데, 다를 경우 고쳐야 할 색에 카운트해준다

- else에서는 인덱스 합이 홀수이면 시작점과 다른 색이어야 하는데, 같을 경우 고쳐야 할 색에 카운트해준다.

 

* 코드가 필요하신 분은 아래 github 주소를 참고해주시고, 틀린 점이나 궁금하신 점이 있으신 분들은 댓글을 남겨주세요!!

https://github.com/JunSeokCheon/Codingtest/blob/master/CLASS2/1018_%EC%B2%B4%EC%8A%A4%ED%8C%90%20%EB%8B%A4%EC%8B%9C%20%EC%B9%A0%ED%95%98%EA%B8%B0.py

 

GitHub - JunSeokCheon/Codingtest: python for codingtest

python for codingtest. Contribute to JunSeokCheon/Codingtest development by creating an account on GitHub.

github.com

 

댓글