1181

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int cmp(const void *a, const void *b) {
    char *str1 = (char *)a;
    char *str2 = (char *)b;

    int len1 = strlen(str1);
    int len2 = strlen(str2);

    if (len1 != len2) {
        return len1 - len2; // 길이 짧은 게 먼저
    }
    return strcmp(str1, str2); // 길이가 같으면 사전순
}

int main(void) {
    int num;
    scanf("%d", &num);

    // 입력 받기
    char str_arr[20000][51];
    for (int i = 0; i < num; i++) {
        scanf("%s", str_arr[i]);
    }

    // 퀵 정렬
    qsort(str_arr, num, sizeof(str_arr[0]), cmp);

    // 출력
    printf("%s\n", str_arr[0]);
    for (int i = 1; i < num; i++) {
        if (strcmp(str_arr[i-1], str_arr[i]) != 0) {
            printf("%s\n", str_arr[i]);
        }
    }

    return 0;
}


에휴

 

버퍼 지랄나고(는 내가 해결함) 시간초과 뜨고 난리 나서 결국 지피티와 인터넷 도움으로 품

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void swap (char (*str_arr)[51], int i, int j){
    char temp_str[51];
    strcpy(temp_str, str_arr[j]);
    strcpy(str_arr[j], str_arr[i]);
    strcpy(str_arr[i], temp_str);
}

int main(void){
    int num;
    scanf("%d", &num);

    char str_arr [20000][51] = {0};
    for(int i = 0; i < num; i++){
        scanf("%s", str_arr[i]);

        for(int j = 0; j < i; j++){
            if(strlen(str_arr[j]) > strlen(str_arr[i])){
                swap(str_arr,i,j);
            }
            
            if(strlen(str_arr[j]) == strlen(str_arr[i])){
                if (strcmp(str_arr[j], str_arr[i]) > 0) {
                    swap(str_arr, i, j);
                }
                
            }
        }
    }

    printf("%s\n", str_arr[0]);
    for (int i = 1; i < num; i++) {
        if (strcmp(str_arr[i-1], str_arr[i]) != 0) {
            printf("%s\n", str_arr[i]);
        }
        
    }
    return 0;
}

원래 이 코드로 풀었는데 vsCode에선 잘 출력되는데 백준에서는 자꾸 시간초과 나는 거;;

알고 보니 내가 정렬하는 부분에서 O(n^2)이 돼서 너무 오래 걸려서 시간초과가 나는거였삼

 

quick정렬로 바꿔서 하니까 걍 바로 됨. ㅇ 짜증남 ㅇ

 

아 string.h랑 stdilb.h 좀 공부해야겠삼.. ㅜㅜ

에휴에효

'백준' 카테고리의 다른 글

[ 백준 / C ] 10807번 : 개수 세기  (0) 2025.09.17
[ 백준 / C ] 4758번 : Filling Out the Team  (0) 2025.09.16
[ 백준 / C ] 1568번 : 새  (0) 2025.09.12
[ 백준 / C ] 1094번 : 막대기  (0) 2025.09.11
[ 백준 / C ] 5618번 : 공약수  (0) 2025.09.10

+ Recent posts