dnjsdudals32   2년 전

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int N;
string str[20001];
bool compare(const string &i, const string &j){
if (i.length() == j.length()){
return i < j;
}
return i.length() < j.length();
}
int main(){
std::ios::sync_with_stdio(false);
cin >> N;
for (int n = 0; n < N; n++)
cin >> str[n];

sort(str, str + N, compare);

for (int n = 0; n < N; n++){
if (n != 0 && (str[n]== str[n - 1]))
continue;
else
cout << str[n] << '\n';
}
return 0;
}

이거는 16ms정도

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

bool sortFunction(string& s1, string& s2) {
int s1Size = s1.size();
int s2Size = s2.size();

if (s1Size == s2Size) {
return s1 < s2;
}

return s1Size < s2Size;
}

int main() {
std::ios::sync_with_stdio(false);

int n;
string arr[20001];

cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}

sort(arr, arr + n, sortFunction);

for (int i = 0; i < n; i++) {
if (i == n - 1) {
cout << arr[i] << endl;
continue;
}
if (arr[i] == arr[i + 1])continue;
cout << arr[i] << endl;
}
}

이거는 600ms정도


djm03178   2년 전

endl이 범인이네요. 느리다고 듣기는 했지만 이 정도일 줄은 저도 이제야 알았네요. '\n'으로 바꿔주기만 하면 됩니다.

YunGoon   2년 전

와 진짜 40배 가량이나 차이 나네요 ㄷㄷ

djm03178   2년 전

http://en.cppreference.com/w/c... 강제로 flush를 시켜서 그런가 봅니다.

댓글을 작성하려면 로그인해야 합니다.