백준 1181 단어 정렬

hyoJeong·2021년 5월 21일
0

이번에 풀어볼 문제는 난이도 실버 5에 속하는 문제입니다.
문제:https://www.acmicpc.net/problem/1181

문제 해결아이디어: 문제 조건에 문자열 길이가 짧은것 부터 출력되어야 하고, 문자열 길이가 같은경우 사전 순으로 출력되어야 합니다. 같은 문자열이 있다면 한번만 출력합니다.
쉬운 편에 속하는 정렬문제입니다.
구조체를 만들어 문자열 정렬 조건을 맞춰 작성후, 출력하도록 코드를 작성했습니다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//구초제
struct a{
    
    string s;
  
    a(string ss){
        s=ss;
    }
    bool operator <(const a & b)const{
        if(s.size()==b.s.size()){
            return s<b.s;
        }
        else {
            return s.size()<b.s.size();
        }
     
    }
    
    
    
};

int main(){
    
    cin.tie(0);
    cout.tie(0);
    std::ios::sync_with_stdio(false);
   
    //입력받을 단어의 수
    int cnt;
    cin>>cnt;
    vector<a> v;
    //입력받을 문자열
    string sub;
    for(int i=0;i<cnt;i++){
        cin>>sub;
        v.push_back(a(sub));
      
      
    }
    //구조체에서 정의한것을 기준으로 정렬
    sort(v.begin(), v.end());
    //같은 문자열 생략하기 위해
    string tmp="";
    //문자열 출력
    for(int i=0;i<cnt;i++){
        if(tmp==v[i].s)
            continue;
        cout<<v[i].s<<"\n";
        tmp=v[i].s;
    }
    
    
    
    
    
    return 0;
}

작성한 코드입니다.!
궁금한점, 더 좋은 풀이가 있다면 댓글남겨주세요!

0개의 댓글