https://www.acmicpc.net/problem/10867
풀이를 무려 3가지나 떠올렸다!!!
1번 풀이)
중복을 허용하지 않으면서, 오름차순으로 자동정렬하는 stl은 set이 있다.
그래서 set을 활용해봤다.
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
set<int> s;
int n;
cin >> n;
int num;
for (int i = 0; i < n; i++)
{
cin >> num;
s.insert(num);
}
for (set<int>::iterator i = s.begin(); i != s.end(); i++)
{
cout << *i << ' ';
}
return 0;
}
2번 풀이)
정렬한 다음에 중복이 나오면 그냥 건너뛰는 방식
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, num;
cin >> n;
vector<int> v;
for (int i = 0; i < n; i++)
{
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end());
int temp = v[0];
cout << temp << ' ';
for (int i = 1; i < n; i++)
{
if (v[i] == temp)
continue;
else
{
temp = v[i];
cout << temp << ' ';
}
}
}
3번 풀이)
unique와 erase 함수를 사용하기. 이건 자주 사용하는 것 같다.
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, num;
cin >> n;
vector<int> v;
for (int i = 0; i < n; i++)
{
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (auto& i : v)
{
cout << i << ' ';
}
}
'백준 문제풀이 > 실버5' 카테고리의 다른 글
10815번 - 숫자 카드 (0) | 2022.06.08 |
---|---|
백준 2941번 - 크로아티아 알파벳 (0) | 2022.05.28 |
백준 1312번 - 소수 (0) | 2022.03.10 |
백준 11651번 - 좌표 정렬하기 2 (0) | 2022.02.15 |
백준 7568번 - 덩치 (0) | 2022.02.15 |