반응형
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
풀이
-sort를 이용한 단순 정렬 문제
-strcmp대신 c++에서 사용하는 str[i].compare(str[i+1])를 사용함
/*baekjoon 1181 단어 정렬*/
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
#define MAX 20000
int N;
string Data[MAX+10];
void InputData(){
cin >> N;
for(int i = 0; i < N; i++){
cin >> Data[i];
}
}
void OutputData(){
for( int i=0; i<N; i++){
cout << Data[i]<< endl;
}
}
bool comp(string i, string j){
if (i.size() == j.size()){
return (i < j);
}
else{
return i.size() < j.size();
}
}
void Solve(){
cout << Data[0] << endl;
for(int i=0; i<N-1; i++){
if(Data[i].compare(Data[i+1]) ){
cout << Data[i+1] << endl;
}
}
}
int main()
{
InputData();
sort( Data, Data+N, comp);
Solve();
return 0;
}
/*baekjoon 1181 단어 정렬*/
반응형
'Algorithm > sorting' 카테고리의 다른 글
[c++][algoritm][baekjoon]11651 좌표정렬하기2 (0) | 2021.06.27 |
---|---|
[c++][algorithm][백준] 1427 소트인사이드 (0) | 2021.06.27 |
[c++][algoritm][baekjoon] 10989 수 정렬 3 (0) | 2021.05.16 |
[c++]baekjoon 10814 나이순 정렬 (0) | 2021.05.15 |
[c++]baekjoon 2751 수 정렬하기2 (0) | 2021.05.04 |