728x90
풀이
문자열과 문자열의 길이를 구조체 배열로 저장해주고, Quick Sort를 사용해 길이에 따라 오름차순 정렬 후,
길이가 같을 때는 strcmp()로 문자열을 비교해 문자열이 크고 작은지에 따라 정렬해준다.
- 문자열을 비교해 동일한 문자열을 가지는 구조체가 없을때만 출력해준다.
소스코드
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct {
char str[51];
int len;
}Str;
int compare(const void *a, const void *b){
Str s1 = *(Str*)a, s2 = *(Str*)b;
if (s1.len < s2.len)
return -1;
else if (s1.len > s2.len)
return 1;
return strcmp(s1.str, s2.str);
}
int main(){
int N, min = 0, max = 0;
scanf("%d", &N);
Str s[N];
for (int i = 0; i < N; i++){
scanf("%s", s[i].str);
s[i].len = strlen(s[i].str);
}
qsort(s, N, sizeof(Str), compare);
puts(s[0].str);
for (int i = 1; i < N; i++)
if (strcmp(s[i-1].str, s[i].str))
puts(s[i].str);
}
출처
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 2751] 수 정렬하기 2 [C] (0) | 2021.07.15 |
---|---|
[백준 2609] 최대공약수와 최소공배수 [C] (0) | 2021.07.15 |
[백준 1259] 팰린드롬수 [C] (0) | 2021.07.15 |
[백준 1018] 체스판 다시 칠하기 [C] (0) | 2021.07.15 |
[백준 10998] A×B [C] (0) | 2021.07.15 |