BEAKJOON

백준(1181번 단어 정렬)풀이 C++

Shin_jisoo 2021. 1. 18. 19:13
728x90

www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

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

www.acmicpc.net

1) 주석 없는 VERSION

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

using namespace std;

bool com(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>v;
	
	for (int i = 0;i < n;i++) {
		string str;
		cin >> str;

		if (find(v.begin(), v.end(), str) == v.end()) {
			v.push_back(str);
		}

	}

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

	for (int i = 0;i < v.size();i++) {
		cout << v[i] << "\n";
	}

}

 

2) 주석 있는 VERSION

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

using namespace std;

// a,b 의 길이를 비교하고 길이를 오름차순 정렬하는 함수
bool com(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>v;
	
	for (int i = 0;i < n;i++) {
		string str;
		cin >> str;

		// 입력한 문장이 vector 안에 있는 문장과 겹치지 않을경우
		// (= vector 의 end 인경우)
		if (find(v.begin(), v.end(), str) == v.end()) {

			// vector 안에 넣어 주기
			v.push_back(str);
		}

	}

	// vecotr 를 com 함수로 정렬
	sort(v.begin(), v.end(), com);

	//출력
	for (int i = 0;i < v.size();i++) {
		cout << v[i] << "\n";
	}

}