반응형
728x170
쉬운 문제지만
sort에서 cmp를 이용하는 문제고 문자열을 이용해서 익혀볼만 하다.
https://www.acmicpc.net/problem/1181
[문제풀이(Problem Solving)/C++ 문제풀이에 유용한 것들] - set처럼 vector에서도 중복된 것들 없애기, unique()
위 글이 도움이 될 것이다.
#맞는 풀이
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int N;
vector<string> vec;
bool cmp(string s1, string s2){
//길이가 작은 것이면 앞으로
if(s1.length() < s2.length()){
return true;
}else if(s1.length() == s2.length()){ // 길이가 같으면 사전순으로
return s1<s2;
}else{
return false;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
while(N--){
string s;
cin >> s;
vec.push_back(s);
}
sort(vec.begin(), vec.end(), cmp);
//유일하게 남기기
vec.erase(unique(vec.begin(), vec.end()), vec.end());
for(string s : vec){
cout << s << "\n";
}
}
핵심은
cmp이다.
문자열의 사전순 비교할 때
그냥 s1 < s2한 이유는
일반적으로 사전순이란 것이 문자열 값이 작은 것이 앞으로 가는 것이 지정되어 있기 때문이다.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 2580번 C++ [CPP] (0) | 2021.06.08 |
---|---|
백준, BOJ, 11562번 C++ [CPP] (0) | 2021.06.08 |
백준, BOJ, 18870번 C++ [CPP] (0) | 2021.06.07 |
백준, BOJ, 15650번 C++ [CPP] (0) | 2021.06.06 |
백준, BOJ, 14501번 C++ [CPP] (0) | 2021.06.06 |