※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 18003번 문제인 Checkerboard이다.
문제는 아래 링크를 확인하자.

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

 

18003번: Checkerboard

The first line contains four space-separated integers r, c, v and h (1 ≤ v ≤ r ≤ 50, 1 ≤ h ≤ c ≤ 50) where the checkerboard is to have r rows and c columns, with v rectangles vertically and h rectangles horizontally. Each of the next v lines c

www.acmicpc.net

문제에서 주어지는 정보로 격자판을 출력하는 문제이다.

 

어떤 칸의 색은 "맨 왼쪽 상단 칸"에서 이 칸까지 이동할 때 지나야하는 경계선의 개수의 홀짝에 의해 결정된다는 점을 이용하면 문제를 간단히 해결할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int R, C, RR, CC;
int row[50], col[50];
int ridx, cidx, rsign, csign;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> R >> C >> RR >> CC;
	while (RR--) {
		int x; cin >> x;
		while (x--) {
			row[ridx++] = rsign;
		}
		rsign ^= 1;
	}
	while (CC--) {
		int x; cin >> x;
		while (x--) {
			col[cidx++] = csign;
		}
		csign ^= 1;
	}

	for (int r = 0; r < R; r++) {
		for (int c = 0; c < C; c++) cout << ((row[r] ^ col[c] == 0) ? 'B' : 'W');
		cout << '\n';
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 6060 // C++] Wheel Rotation  (0) 2022.09.27
[BOJ 6059 // C++] Pasture Walking  (1) 2022.09.26
[BOJ 1368 // C++] 물대기  (1) 2022.09.24
[BOJ 6057 // C++] Building A Fence  (0) 2022.09.23
[BOJ 21968 // C++] 선린의 터를  (0) 2022.09.22

+ Recent posts