[BAEKJOON 1181번 : 단어 정렬]
[문제]

[고찰]
해당 문제에 대해 아예 접근조차 하지 못해, 어쩔 수 없이 다른 분들의 풀이를 볼 수 밖에 없었습니다..
[개념]
해당 문제의 핵심 아이디어는 사용자 정의 sort를 쓸 수 있는지에 대한 것이었습니다.
bool compare()이라는 함수를 만들어,
입력받은 words를 sort(words.begin(), words.end(), compare);로 사용자 정의 정렬을 하였습니다.
compare 함수에서는,
1. 길이가 다르다면 길이에 따라 정렬하게하고,
2. 길이가 같다면 알파벳 순서에 따라 정렬하게 구현하였습니다.
bool compare(const string& a, const string& b)
{
if (a.length() != b.length())
return a.length() < b.length();
return a < b;
}
정렬을 모두 마친 후에는, 전에 단어와 같은 단어가 아닐때만 출력하게 합니다.
string prev = "";
for (const string& word : words)
{
if (word != prev)
{
cout << word << '\n';
prev = word;
}
}
[정리]
알고 있었던 개념이었지만, 정작 활용할 생각은 못했습니다.
전에 올렸던 다짐과 동일하지만, 많은 문제량이 이를 해결해줄 것 같습니다.
[Solution]
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// BAKEJOON 1181번 : 단어 정렬
bool compare(const string& a, const string& b)
{
if (a.length() != b.length())
return a.length() < b.length();
return a < b;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<string> words(n);
for (int i = 0; i < n; i++)
{
cin >> words[i];
}
sort(words.begin(), words.end(), compare);
string prev = "";
for (const string& word : words)
{
if (word != prev)
{
cout << word << '\n';
prev = word;
}
}
return 0;
}'코딩 테스트' 카테고리의 다른 글
| [코딩테스트 35일차] BAEKJOON 10814번 : 나이순 정렬 (0) | 2025.06.24 |
|---|---|
| [코딩테스트 34일차] BAEKJOON 11650번 : 좌표 정렬하기, 1193번 : 분수찾기 (0) | 2025.06.23 |
| [코딩테스트 32일차] BAEKJOON 2941번 : 크로아티아 알파벳 (0) | 2025.06.20 |
| [코딩테스트 31일차] BAEKJOON 1316번 : 그룹 단어 체커 (1) | 2025.06.19 |
| [코딩테스트 30일차] BAEKJOON 1032번 : 명령 프롬프트, 9093번 : 단어 뒤집기 (0) | 2025.06.17 |