알고리즘/BOJ

백준 1181번 단어 정렬

꾸준함. 2018. 10. 9. 02:05

문제 링크입니다: 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