[백준/BOJ] 백준 1181번 : 단어 정렬

2020. 12. 29. 11:35알고리즘 문제풀이

www.acmicpc.net/problem/1181

 

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;
}