728x90
반응형
문제 링크
https://www.acmicpc.net/problem/1181
문제 설명
- 알파벳 소문자로 이루어진 N개의 단어를 조건에 따라서 정렬하는 프로그램을 만드는것
- 길이가 짧은것 부터, 같은 경우 사전 순정렬
- 중복 없이
중복제거 하는 경우 소스코드
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const string &u, const string &v) {
if (u.size() == v.size()) {
return u < v;
}
else {
return u.size() < v.size();
}
}
int main() {
int N;
cin >> N;
vector<string> words(N);
for (int i = 0; i < N; i++) {
cin >> words[i];
}
sort(words.begin(), words.end(),cmp);
words.erase(unique(words.begin(), words.end()), words.end());
for (int i = 0; i < words.size(); i++) {
cout << words[i]<<'\\n';
}
}
출력하면서 중복제거하는 경우
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(const string &u, const string &v) {
if (u.size() == v.size()) {
return u < v;
}
else {
return u.size() < v.size();
}
}
int main() {
int N;
cin >> N;
vector<string> words(N);
for (int i = 0; i < N; i++) {
cin >> words[i];
}
sort(words.begin(), words.end(),cmp);
//words.erase(unique(words.begin(), words.end()), words.end());
for (int i = 0; i < words.size(); i++) {
if(i==0 || words[i]!=words[i-1])
cout << words[i]<<'\\n';
}
}
차이점 (알아두면 좋은 것)
//1
words.erase(unique(words.begin(), words.end()), words.end());
//2
for (int i = 0; i < words.size(); i++) {
if(i==0 || words[i]!=words[i-1])
cout << words[i]<<'\\n';
}
- unique 함수를 쓰거나
- 출력시 중복을 제거하능 방법임
728x90
반응형
'알고리즘 최종 (단계별) > 0.init' 카테고리의 다른 글
9935_문자열폭발 (0) | 2023.06.20 |
---|---|
1236_성지키기 (0) | 2023.06.16 |
백준 1076 저항 (0) | 2023.06.11 |
댓글