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

 

이번에 볼 문제는 백준 28250번 문제인 이브, 프시케 그리고 푸른 MEX의 아내이다.
문제는 아래 링크를 확인하자.

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

 

28250번: 이브, 프시케 그리고 푸른 MEX의 아내

첫째 줄에 정수 $N$이 주어진다. ($2 \le N \le 200\,000$) 둘째 줄에 $N$개의 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($0 \le A_i \le 100\,000$)

www.acmicpc.net

 

크기 2의 multiset의 mex값은 0, 1, 2 세 가지 값만 나올 수 있음을 확인하자.

 

이 때 mex값이 1인 multiset은 0을 포함하지만 1을 포함하지 않는 경우이고, mex값이 2인 multiset은 0과 1을 모두 포함하는 경우임을 확인해 문제를 해결하자. '0을 포함하지만 1을 포함하지 않는 경우'에는 0을 두 개 고르는 경우도 포함됨에 유의하자. 

 

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

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

int N;
ll cnt0, cnt1, cnt2;
ll ans;

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

	cin >> N;
	while (N--) {
		int x; cin >> x;
		if (x == 0) cnt0++;
		else if (x == 1) cnt1++;
		else cnt2++;
	}
	
	ans += cnt0 * (cnt0 - 1) / 2;
	ans += cnt0 * cnt2;
	ans += cnt0 * cnt1 * 2;

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 13269 // C++] 쌓기나무  (0) 2024.02.23
[BOJ 10914 // C++] Veni, vidi, vici  (0) 2024.02.22
[BOJ 24789 // C++] Railroad  (0) 2024.02.20
[BOJ 13268 // C++] 셔틀런  (1) 2024.02.19
[BOJ 2986 // C++] 파스칼  (0) 2024.02.18

+ Recent posts