티스토리 뷰

알고리즘

[백준 1181번/c++] 단어 정렬

개발기록 :) 2022. 7. 3. 14:04
알고리즘

 

  • 문자열
  • 정렬

성공 코드

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;

struct Word{
	int length;
	string content;
	
	Word(string content){
		this->length = content.size();
		this->content = content;
	}
	
	bool operator<(Word &word){
    	// 길이가 다르면 길이 기준 오름차순 정렬
		if(this->length != word.length){
			return this->length<word.length;
		} else{ // 길이가 같으면 사전 순으로 정렬
			return this->content<word.content;
		}
	}
};

int main() {
	// freopen("input.txt", "rt", stdin);
	int n;
	string w;
	vector<Word> v;
	cin >> n;
	for(int i=0; i<n; i++){
		cin >> w;
		v.push_back(Word(w));
	}
	sort(v.begin(), v.end());
    string tmp = " ";
	for(int i=0; i<n; i++){
    	// 중복되는 단어 한번만 출력
        if(v[i].content == tmp){
            continue;
        }
        tmp = v[i].content;
		cout << v[i].content << endl;
	}

	return 0;
}