알고리즘/C++ 풀이 기록

백준 - 1181 단어 정렬

swanim 2021. 9. 11. 20:27

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

 

1181번: 단어 정렬

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

www.acmicpc.net

 

1. 풀이 코드 (C++)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <string> v1;

bool compare(string a, string b) {
	if (a.size() == b.size()) {
		return a < b; //오름차순 정렬
	}
	else {
		return a.size() < b.size();
	}
}

int main(void) {
	
	int n;
	string same;
	cin >> n;

	for (int i = 0; i < n; i++) {
		string inV;
		cin >> inV;
		v1.push_back(inV);
	}

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

	for (int i = 0; i < n; i++) {
		if (same == v1[i]) continue;
		cout << v1[i]<<endl;
		same = v1[i];
	}
	return 0;
}

 

2. 배운 점 

  1. sort() 사용에 있어서 compare를 어떻게 사용하는지 배웠다. 
  2. 문제 꼼꼼히 읽자!! 겹치는 단어는 한 번만 출력한다는 조건을 놓쳤다. 놓치지 말도록.

'알고리즘 > C++ 풀이 기록' 카테고리의 다른 글

백준 - 1755 숫자놀이  (0) 2021.10.14
백준 - 1302 베스트셀러  (0) 2021.09.12
백준 - 1026 보물  (0) 2021.09.10
백준 - 1316 그룹 단어 체커  (0) 2021.09.09
백준 - 22993 서든어택 3  (0) 2021.09.07