https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
이 문제는 배열의 정렬 방식과 같은 요소를 제거하는 방식을 알아야한다.
정렬은 algorigthm의 sort를 사용하고 같은 요소를 제거하는 방법은 if문을 사용했다.
하지만 문제 해결 후 vector의 unique에 대해서 알게 되어 코드의 길이를 더 줄일 수 있다는 것을 알게 되었다.
sort의 정렬 방식은 문자열의 길이가 같을 시 사전 순으로 정렬하고, 문자열의 길이가 다르면 길이 순으로 정렬하였다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool compare(string a, string b){
if(a.length()==b.length()){
return a < b;
}
else {
return a.length() < b.length();
}
}
int main(){
int N;
cin>>N;
vector<string> arr;
arr.assign(N,"");
for(int i =0;i<N;i++){
string input;
cin>>input;
arr[i] = input;
}
sort(arr.begin(),arr.end(),compare);
for(int i =0;i<arr.size();i++){
if(i == arr.size()-1){
cout<<arr[i]<<'\n';
continue;
}
if(arr[i]!=arr[i+1])
cout<<arr[i]<<'\n';
}
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 2] 1654번 랜선 자르기 (0) | 2023.10.04 |
---|---|
[Silver 5] 1436번 영화감독 숌 (0) | 2023.10.04 |
[Silver 4] 1018번 체스판 다시 칠하기 (0) | 2023.10.03 |
[Bronze 1] 1546번 평균 (2) | 2023.10.02 |
[Bronze 1] 1157번 단어 공부 (0) | 2023.10.02 |