※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |