문제 링크입니다: https://www.acmicpc.net/problem/1181
생각보다 예외처리해야할 부분이 많은 문제였습니다.
같은 단어를 입력받지 않기 위해 map을 사용하였고 정렬을 위해 cmp 함수를 직접 정의했습니다.
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
bool cmp(string a, string b)
{
if (a.length() < b.length())
return true;
//같은 길이인 경우 사전 순서
if (a.length() == b.length())
{
for (int i = 0; i < a.length(); i++)
if (a[i] == b[i])
continue;
else if (a[i] < b[i])
return true;
else
return false;
}
return false;
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
vector<string> v;
map<string, bool> visited;
for (int i = 0; i < N; i++)
{
string temp;
cin >> temp;
//같은 단어는 입력하지 않는다
if (!visited.count(temp))
{
visited[temp] = true;
v.push_back(temp);
}
}
//정렬
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++)
cout << v[i] << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2004번 조합 0의 개수 (2) | 2018.10.18 |
---|---|
백준 1629번 곱셈 (2) | 2018.10.18 |
백준 1427번 소트인사이드 (0) | 2018.10.09 |
백준 12110번 Telefoni (0) | 2018.10.04 |
백준 10611번 PŠENICA (0) | 2018.10.03 |