[백준 1181] 단어 정렬

alsry._.112·2023년 9월 12일
0

백준

목록 보기
52/102

🔗문제 풀러가기
단계별로 풀어보기 단계 13의 9번째 문제이다.

문제 분석

길이가 짧은 것부터 정렬하고
길이가 같으면 사전 순으로 정렬하는 함수를 만들어
algorithm의 sort를 이용해 해결하였다.

코드

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

bool compare(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> vec;

	for (int i = 0; i < n; i++)
	{
		string input;

		cin >> input;

		if (find(vec.begin(), vec.end(), input) == vec.end())
		{
			vec.push_back(input);
		}
	}

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

	for (string a : vec)
	{
		cout << a << "\n";
	}
}

해석

  1. 수를 입력받은 후 중복된 단어는 제거하기 위해 지금까지 저장된 벡터에 현재 input이 없을 경우 벡터에 input을 저장한다.
  2. 길이가 짧은 것부터 정렬하고
    길이가 같으면 사전 순으로 정렬하는 함수인 bool compare을 선언해 마지막 sort의 마지막 인자로 넣어준다. 이렇게 하면 compare의 조건대로 벡터를 정렬한다.
  3. 이렇게 정렬된 벡터를 순서대로 출력하면 끝!
profile
소통해요

0개의 댓글