백준

1018번 체스판 다시 칠하기(브루트 포스) - ☆

조주똥 2020. 7. 14. 19:26

#문제링크 : https://www.acmicpc.net/problem/1018

<전략>

1. 처음에는 (1,1)에 있는 색깔과 행,열이 모두 (홀수, 홀수), (짝수, 짝수) 인 곳의 색깔이 다르면 카운트를 증가하고,
(홀수, 짝수), (짝수, 홀수) 인 곳의 색깔이 같으면 카운트를 증가하는 방법으로 했었다. 하지만 이 방법은 정작, (1,1)만 바꾸면 해결되는 문제에서 63개나 다 바꿔버려야 하는 문제가 생긴다. 그렇다고, (1,2)를 추가해서 같은 방법으로 2번 비교한다고 해도, (1,1)과 (1,2) 두개만 바꾸면 되는 상황이 생길 수 있기 때문에 해당 방법으로 접근해서는 안된다.

2. 문제에 주어진 것처럼 경우는 2가지 뿐이다. (1,1)이 B로 시작하거나 W로 시작하거나. 따라서, 아예 B로 시작하는 행렬을 만들고, W로 시작하는 행렬을 만들어 놓고 해당 범위의 체스판과 만들어 놓은 두 행렬과 얼마나 차이가 있는지를 카운트 한다. B로 시작하는 행렬과 카운트한 값과 W로 시작하는 행렬과 카운트한 값 중 더 작은 값을 ans에 담는다.

※주의사항

1. 하나의 문자를 입력받기 위해선 scanf(" %c")를 사용하면 된다. 여기서 앞에 공백을 넣는 것은, 공백과 개행을 무시한다는 의미이고, 앞에 공백을 넣지 않고 그냥 "%c"를 할 경우, 개행(\n)까지 입력받아, 제대로 입력이 이루어지지 않는다.

Code