728x90
안녕하세요! 오늘은 백준 1181번 "단어 정렬" 문제를 풀어보겠습니다.
문제 설명
- 알파벳 소문자로 이루어진 N개의 단어가 주어진다.
- 이를 길이와 사전 순으로 정렬하여 출력하는 프로그램을 작성하시오.
입력
- 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000)
- 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다.
출력
- 조건에 따라 정렬된 단어를 출력한다.
풀이 방법
입력으로는 단어의 개수 N과 N개의 단어가 주어집니다. 이 때, N은 1 이상 20,000 이하의 정수이며, 주어지는 단어들은 알파벳 소문자로 이루어져 있습니다. 단어의 길이는 50을 넘지 않습니다.
이 문제를 해결하는 가장 간단한 방법은 정렬 알고리즘을 사용하는 것입니다. C++에서는 표준 라이브러리 함수인 sort()를 이용할 수 있습니다.
아래는 이 문제를 해결할 수 있는 C++ 코드입니다:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(string a, string b) {
if (a.length() == b.length()) {
return a < b;
}
return a.length() < b.length();
}
int main() {
int N;
cin >> N;
vector<string> words(N);
for (int i = 0; i < N; i++) {
cin >> words[i];
}
sort(words.begin(), words.end(), compare);
words.erase(unique(words.begin(), words.end()), words.end());
for (int i = 0; i < words.size(); i++) {
cout << words[i] << endl;
}
return 0;
}
이 코드는 먼저 입력으로 받은 단어들을 vector에 저장한 후, sort() 함수를 사용해 조건에 맞게 정렬합니다. 그리고 중복된 단어는 제거한 후, 정렬된 결과를 출력합니다. 이렇게 간단한 정렬 알고리즘을 이용하여 문제를 해결할 수 있습니다.
728x90
'백준 문제 풀이 > c++' 카테고리의 다른 글
백준 1436번 "영화감독 숌" --- c++ (0) | 2024.02.29 |
---|---|
백준 1330번 "두 수 비교하기" -- c++ (0) | 2024.02.29 |
백준 1157번 "단어 공부" -- c++ (0) | 2024.02.28 |
백준 1152번 "단어의 개수" -- c++ (0) | 2024.02.28 |
백준 1085번 "직사각형에서 탈출" -- c++ (0) | 2024.02.28 |