[BOJ] 백준 1181 단어 정렬
이 문제의 정렬 조건은 다음과 같습니다.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
하지만 중복 단어는 출력하지 않습니다. 정렬한 후 벡터에는 중복되는 단어들은 그들 끼리 모여있으므로, 바로 뒤의 단어와 같은 단어가 나왔다면 출력을 skip 하면 됩니다.
소스 코드 :
#include#include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; cin.ignore(); // 단어의 길이와 단어를 저장할 벡터 선언 vector< pair > v; for (int i = 0; i < n; i++) { string s; cin >> s; cin.ignore(); v.push_back(pair (s.length(), s)); } // 정렬 수행 하면, 단어의 길이순으로 정렬되고 같은단어는 뭉쳐있게 됨. sort(v.begin(), v.end()); for (int i = 0; i < n - 1; i++) { // 중복단어는 출력하지 않음. if (v[i].second == v[i + 1].second) continue; cout << v[i].second << endl; } cout << v[n - 1].second << endl; }
댓글
댓글 쓰기