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

 

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

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

 

23252번: 블록

아래 그림에 주어진 세 종류의 타일이 각각 $A$개, $B$개, $C$개 주어졌을 때 세로 길이가 2인 직사각형을 만들 수 있다면 Yes를, 없다면 No를 출력하는 프로그램을 작성하시오. 완성한 직사각형에는

www.acmicpc.net

덮이는 전체 칸의 개수가 짝수개가 아니면 세로길이가 2인 직사각형을 만들 수 없다.

 

세로길이가 2인 직사각형을 만들기 위해서는 ㄴ자 타일 하나당 1칸짜리 타일 하나를 대응시켜야만 한다는 점을 관찰하자.

 

마지막으로, 가로 두칸 타일만이 홀수개 존재한다면 세로길이가 2인 직사각형이 나올 수 없다.

 

위의 내용을 구현해 문제를 해결하자.

 

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

#include <iostream>
using namespace std;
typedef long long ll;

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

	int T; cin >> T;
	while (T--) {
		int x, y, z; cin >> x >> y >> z;
		if (((x + z) % 2 == 0) && x >= z) {
			if ((y & 1) && (x == 0)) cout << "No\n";
			else cout << "Yes\n";
		}
		else cout << "No\n";
	}
}
728x90

+ Recent posts