알고리즘 문제풀이
[백준/BOJ] 백준 1181번 : 단어 정렬
GeniusJo
2020. 12. 29. 11:35
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
set<string> word[51]를 통해 문자열의 길이(문자열의 길이는 50을 넘지 않으므로)마다 사전 순으로 저장한다.
코드
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
using namespace std;
int n;
set<string> word[51]; //문자열의 길이마다 사전순으로 저장한다
set<string>::iterator it;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; i++)
{
string input;
cin >> input;
word[input.size()].insert(input); //문자열의 길이마다 사전순으로 저장한다
}
for (int i = 0; i < 51; i++)
{
if (word[i].size() != 0) //해당길이의 문자가 있을때
{
for (it = word[i].begin(); it != word[i].end(); it++)
cout << *it << "\n";
}
}
return 0;
}