๋ฌธ์
๋ฉด์ด 6๊ฐ์ธ ์์๊ฐ ์๋ค. ์ด๋ฅผ ์ฌ๋ฌ ๊ฐ์ง ์์ข ์ด๋ฅผ ๋ถ์ฌ ๊พธ๋ฐ๋ ค๊ณ ํ๋๋ฐ, ๋จ ์กฐ๊ฑด์ด ์๋ค. ์ธ์ ํ ๋ฉด์ ๊ฐ์ ์์ ์์ข ์ด๋ฅผ ๋ถ์ด๋ฉด ์ ๋๋ค๋ ๊ฒ์ด๋ค. ๋ํ, ํ ๋ฉด์๋ ํ ์ฅ์ ์์ข ์ด๋ง ๋ถ์ผ ์ ์๋ค. ์ฌ๋ฌ ๊ฐ์ง ์์ ์์ข ์ด๋ค์ด ์ฃผ์ด์ก์ ๋, ์กฐ๊ฑด์ ๋ง์กฑํ์ฌ ์์์ ๋ชจ๋ ๋ฉด์ ๋ถ์ผ ์ ์๋์ง ํ๋ณํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ข ์ด์ ์ฅ์ N ( 1 <= N <= 1,000 ) ์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์ ๊ฐ๊ฐ์ ์์ข ์ด์ ์๊น์ ๋ํ๋ด๋ N๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ค. ์๊น์ ์์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 1๋ถํฐ N๊น์ง์ ๋ฒ์์ ์์ด๋ค.
์ถ๋ ฅ
์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด์ ์์๋ฅผ ๊พธ๋ฐ ์ ์์ผ๋ฉด “YES”, ์๋๋ฉด “NO”๋ฅผ ์ถ๋ ฅํ๋ค.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr(n+1, 0);
for (int i = 0; i < n; i++) {
int tmp;
cin >> tmp;
arr[tmp]++;
}
int cnt = 0, cnt2 = 0;
for (int i = 1; i <= n; i++) {
if (arr[i] >= 2) {
cnt++;
continue;
}
if (arr[i] >= 1)
cnt2++;
}
if (cnt >= 3 || cnt2 >= 6 || (cnt >= 2 && cnt2 >= 2) || (cnt >= 1 && cnt2 >= 4))
cout << "YES";
else
cout << "NO";
return 0;
}
์์ ํ์์ผ๋ก ๊ฐ๋ฅํ์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ๋ฌ ํ์ ๊ธฐ๋ฒ์ด ์์ง๋ง ์ด ๋ฌธ์ ์์๋ ์์ ํ์์ ํจ์จ๋ ๋์์ง ์์ต๋๋ค. ์คํ๋ ค ๋ก์ง์ด ๋จ์ํด์ ๋ ๋น ๋ฅผ์๋ ์๊ฒ ๊ตฐ์.
์ ์ก๋ฉด์ฒด์ ์ธ์ ํ ๋ฉด์ ์์ด ๊ฒน์น์ง ์๊ฒ ๋ถํ๋ ๋ฐฉ๋ฒ์ ์ด 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
1. ๋ค๋ฅธ ์์ข ์ด๋ฅผ 1๊ฐ์ฉ 6๊ฐ๋ฅผ ๋ณด์ ํ ๊ฒฝ์ฐ ( ๋นจ, ์ฃผ, ๋ ธ, ์ด, ํ, ๋จ, ๋ณด )
2. ๋ค๋ฅธ ์์ข ์ด๋ฅผ 2๊ฐ์ฉ 3๊ฐ๋ฅผ ๋ณด์ ํ ๊ฒฝ์ฐ ( ๋นจ, ๋นจ, ๋ ธ, ๋ ธ, ๋จ, ๋จ )
3. ๋ค๋ฅธ ์์ข ์ด๋ฅผ 2๊ฐ์ฉ 2๊ฐ๋ฅผ ๋ณด์ ํ๊ณ , 1๊ฐ์ฉ 2๊ฐ๋ฅผ ๋ณด์ ํ ๊ฒฝ์ฐ ( ๋นจ, ๋นจ, ์ฃผ, ์ฃผ, ๋ ธ, ์ด )
4. ๋ค๋ฅธ ์์ข ์ด๋ฅผ 2๊ฐ์ฉ 1๊ฐ๋ฅผ ๋ณด์ ํ๊ณ , 1๊ฐ์ฉ 4๊ฐ๋ฅผ ๋ณด์ ํ ๊ฒฝ์ฐ ( ๋นจ, ๋ฐ, ์ฃผ, ๋ ธ, ์ด, ํ, ๋จ )
๋ฐ๋ผ์, ๊ฐ๊ฐ์ ์์ข ์ด์ ๊ฐฏ์๋ฅผ ๋ฐฐ์ด ๋๋ ๋ฒกํฐ์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ์ ์ฅํ๊ณ , ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ด 1, 2 ์ด์์ธ์ง ๊ฒ์ฌํ์ฌ ๊ฐฏ์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ํ์ํ๊ณ ๋์, ์ 4๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๊ฐ๋ฅํ๋ค๋ฉด "YES"๋ฅผ ์ถ๋ ฅํ๊ณ , ์กฐ๊ฑด์ด ํ๋๋ ํด๋น๋์ง ์๋๋ค๋ฉด "NO"๋ฅผ ์ถ๋ ฅํฉ๋๋ค.