単語のソート
単語のソート
質問する
N個の小文字の単語がある場合は、次の条件に従ってプログラムを作成します.
短い始まりから.
同じ長さの場合は辞書順
入力
1行目は単語の個数Nを与える.(1≦N≦20000)2行目から、各行にN個の小文字からなる単語があります.指定された文字列の長さは50を超えません.
しゅつりょく
条件付きソートで単語を出力します.ただし,同じ単語が複数回入力されると,1回のみ出力される.
コード#コード#
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(string a, string b) {
if(a.length() == b.length()) // 길이가 같으면 사전순
return a < b;
else return a.length() < b.length(); // 길이가 짧은 순서로
}
int main() {
int N;
string tmp;
vector<string> arr;
/* 입력 */
scanf("%d", &N);
for(int i = 0; i < N; i++) {
cin >> tmp;
arr.push_back(tmp);
}
/* 풀이 */
sort(arr.begin(), arr.end(), comp); // 정렬
arr.erase(unique(arr.begin(), arr.end()), arr.end()); // 중복 제거
/* 출력 */
for(int i = 0; i < arr.size(); i++) {
cout << arr[i] << "\n";
}
}
追加の説明
今回はsort関数を直接作成するのではなく、提供されたsort関数を使用しました.
代わりにcomp関数を作成し、条件に従ってソートします.
またvectorのuniqueとerase関数を用いて重複を解消した.
ソース:https://www.acmicpc.net/problem/1181
Reference
この問題について(単語のソート), 我々は、より多くの情報をここで見つけました https://velog.io/@kkoala/01181-단어-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol