Algorithm

7701. 염라대왕의 이름 정렬

이무쿤 2020. 5. 2. 13:30
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWqU0zh6rssDFARG&categoryId=AWqU0zh6rssDFARG&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

sort기준 정하고 풀면되는 간단한 문제인데, c++에서 cin,cout sync false하고 풀어도 시간초과 발생한다.

무조건 scanf ,printf로만 풀어야 하는 문제.

 

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char name[20000][51];
int idx[20000];
 
//문제 잘 안읽어서 삽질
bool cmp(int l, int r) {
    if (strlen(name[l]) == strlen(name[r]))
        return (strcmp(name[l], name[r]) < 0);
    else return (strlen(name[l]) < strlen(name[r]));
}
int main() {
//  freopen("input.txt", "r", stdin);
    int T;
    scanf("%d", &T);
    for (int tc = 1; tc <= T; tc++) {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n; i++) scanf("%s", name[i]), idx[i] = i;
        sort(idx, idx + n, cmp);
        printf("#%d\n", tc);
        char none[51] = "";
        char* before = none;
        for (int i = 0; i < n; i++) {
            if (strcmp(before, name[idx[i]])) {
                printf("%s\n", name[idx[i]]);
                before = name[idx[i]];
            }
        }
    }
}
반응형