PS/BOJ

[백준 BOJ][sort] 1181 단어 정렬

Jubil 2018. 7. 24. 00:45
반응형

1181_단어 정렬

링크

https://www.acmicpc.net/problem/1181

 

풀이


 

sort() 함수의 세 번째 인자에 들어갈 compare 함수의 정의가 필요합니다.

 

첫 번째 조건은 길이가 짧은 것부터, 이 조건은 compare 함수의 인자가 (string a, string b)라고 했을 때, if(a.size() != b.size()) return a.size() < b.size(); 해주면 됩니다.

두 번째 조건은 길이가 같으면 사전 순으로, 이 조건은 return a < b; 해주면 됩니다.

string이 사전순으로 처리해 주기 때문입니다.

 

마지막으로 중복 제거입니다.

저는 이전에 출력한 문자열을 저장해둔 다음, 출력할 때 비교하게 해서 출력시에 처리하기로 했습니다.

 

코드

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#include <cstdio>

#include <iostream>

#include <algorithm>

#include <string>

using namespace std;

 

string str[20000];

string joong;

 

bool compare(string a, string b){

    if (a.size() != b.size()){

        return a.size() < b.size();

    }

    

    return a < b;

}

 

int main(){

    int n;

 

    cin >> n;

 

    for (int i = 0; i < n; ++i){

        cin >> str[i];

    }

 

    sort(str, str + n, compare);

 

    for (int i = 0; i < n; ++i){

        if (joong != str[i])

            cout << str[i] << "\n";

        joong = str[i];

    }

    

    return 0;

}

Colored by Color Scripter

cs

 



반응형