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

 

이번에 볼 문제는 백준 23253번 문제인 자료구조는 정말 최고야이다.
문제는 아래 링크를 확인하자.

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

 

23253번: 자료구조는 정말 최고야

위 그림처럼 책이 쌓여 있으므로, 첫 번째 더미 - 두 번째 더미 - 첫 번째 더미 - 두 번째 더미 순으로 꺼내면 책 번호순으로 나열할 수 있다.

www.acmicpc.net

어떤 한 더미의 책 안에서 번호가 큰 책 하나가 번호가 작은 책 보다 위에 있는 경우가 존재한다면 어떻게 책을 꺼내더라도 번호가 작은 책을 번호가 큰 책보다 먼저 꺼낼 수 없으므로 답이 될 수 없다.

 

반대로 모든 책 더미들의 책 번호들의 책번호가 위로 갈수록 작다면 모든 중간단계에서 현재 남아있는 책들 중 가장 작은 번호인 책은 맨 위의 책들 중 하나일 수밖에 없으므로 항상 올바른 순서대로 꺼낼 수 있다.

 

위의 두 가지 경우로 상황을 구분해 문제를 해결하자.

 

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

#include <iostream>
using namespace std;

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

	bool chk = 1;
	int N, M; cin >> N >> M;
	while (M--) {
		int K; cin >> K;
		int old = N + 1;
		while (K--) {
			int x; cin >> x;
			if (x > old) chk = 0;
			old = x;
		}
	}
	
	if (chk) cout << "Yes";
	else cout << "No";
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 23254 // C++] 나는 기말고사형 인간이야  (0) 2022.07.03
[BOJ 9002 // C++] Match Maker  (0) 2022.07.03
[BOJ 14712 // C++] 넴모넴모 (Easy)  (0) 2022.07.03
[BOJ 14710 // C++] 고장난 시계  (0) 2022.07.03
[BOJ 23251 // C++] 스물셋  (0) 2022.07.03

+ Recent posts