본문 바로가기
🥇Baekjoon Solutions/정렬

[C++] 백준 1181번: 단어 정렬

by 코푸는 개발자 2021. 8. 19.
728x90

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

풀이

알고리즘 라이브러리에 있는 sort함수를 사용하여 해결합니다.

sort함수의 특이 형태인 비교 인자 구분 함수를 사용하여 특별 케이스 정렬을 진행합니다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool compare(string a, string b) {
	if (a.size() == b.size())
		return a < b;// 문자열은 사전식으로 직접 비교가능!!!
	else
		return a.size() < b.size();
}

int main() {
	vector<string>v;
	string k;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N;

	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> k;
		v.push_back(k);
	}

	sort(v.begin(), v.end(), compare);

	string st = "";
	for (auto elem : v) {
		if (st != elem)
			cout << elem << '\n';
		st = elem;
	}

	return 0;
}
728x90

'🥇Baekjoon Solutions > 정렬' 카테고리의 다른 글

[C++] 백준 1920번: 수 찾기  (0) 2021.09.24
[C++] 백준 2108번: 통계학  (0) 2021.08.19
[C++] 백준 1431번: 시리얼 번호  (0) 2021.08.19

댓글