The Way
백준 1181번: 단어 정렬 본문
백준 온라인 저지(BOJ) 1181번 문제
https://www.acmicpc.net/problem/1181
1. 문제 요약
알파벳 소문자로 이루어진 N개의 단어가 들어올 때,
1. 길이가 짧은 것부터
2. 길이가 같으면 사전 순으로
정렬하여 출력하기. 동일한 단어는 한번만 출력한다.
2. 알고리즘
algorithm 헤더에서 제공하는 기본 sort를 이용해주면 간편하다.
비교 함수만 작성해주면 간편. 중복 단어를 체크하기 위해 같은지 함수 또한 필요하다.
3. 코드
#include <iostream> #include <algorithm> struct w { char c[51]; int len = 0; }; bool comp(w l, w r) { if (l.len != r.len) return l.len < r.len; for (int i = 0; i < l.len; ++i) if (l.c[i] != r.c[i]) return l.c[i] < r.c[i]; return false; } bool same(w l, w r) { if (l.len != r.len) return false; for (int i = 0; i < l.len; ++i) if (l.c[i] != r.c[i]) return false; return true; } int main() { w arr[20000]; int N; scanf("%d", &N); for (int i = 0; i < N; ++i) { scanf("%s", arr[i].c); while (arr[i].c[arr[i].len] != '\0') ++arr[i].len; } std::sort(arr, arr + N, comp); printf("%s\n", arr[0].c); for (int i = 1; i < N; ++i) if (!same(arr[i], arr[i - 1])) printf("%s\n", arr[i].c); return 0; }
'PS > 백준 온라인 저지' 카테고리의 다른 글
백준 2884번: 알람 시계 (0) | 2018.02.21 |
---|---|
백준 1010번: 다리 놓기 (0) | 2018.02.21 |
백준 1297번: TV 크기 (0) | 2018.02.19 |
백준 2914번: 저작권 (0) | 2018.02.19 |
백준 3053번: 택시 기하학 (0) | 2018.02.19 |
Comments