※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 6511번 문제인 Black and white painting이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/6511
6511번: Black and white painting
The input contains several test cases. Each test case consists of one line with three integers n, m and c. (8 ≤ n, m ≤ 40000), where n is the number of rows of the painting, and m is the number of columns of the painting. c is always 0 or 1, where 0 in
www.acmicpc.net
어떤 칸이 조건을 만족하는 체스판의 우하단 칸이 될 수 있다는 것은 (1) 해당 위쪽과 왼쪽으로 적어도 7칸씩이 더 있으며 (2) 해당 칸의 색이 흰색이어야 한다는 것과 필요충분조건이 됨을 관찰하자.
(1)을 만족하는 칸은 주어지는 그림의 위쪽 7열과 왼쪽 7열을 제외한 모든 칸과 같다. 이 칸들은 직사각형의 형태를 이루고 있으므로, 남은 칸의 개수가 짝수개이면 그중 절반이 흰색 칸이 됨을 어렵지 않게 관찰할 수 있다. 또한 남은 칸의 개수가 홀수개인 경우 가장 오른쪽 아래 칸을 제외한 칸의 절반이 흰색 칸이 됨을 관찰할 수 있다.
위와 같은 관찰을 이용해 문제를 해결하는 코드를 작성하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int R, C, K;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> R >> C >> K;
while (R || C || K) {
int val = (R - 7) * (C - 7);
if (val & 1) cout << val / 2 + K << '\n';
else cout << val / 2 << '\n';
cin >> R >> C >> K;
}
}
'BOJ' 카테고리의 다른 글
[BOJ 6148 // C++] Bookshelf 2 (0) | 2024.04.15 |
---|---|
[BOJ 13116 // C++] 30번 (0) | 2024.04.14 |
[BOJ 11916 // C++] 볼질 (2) | 2024.04.12 |
[BOJ 27108 // C++] Ordered Fractions (0) | 2024.04.11 |
[BOJ 25955 // C++] APC는 쉬운 난이도 순일까, 아닐까? (0) | 2024.04.10 |