BOJ 문제풀이

백준 1181번 c++ 풀이

koreasunoo 2021. 8. 3. 18:13
SMALL

안녕하세요 오늘은 문자를 정렬해야하는 문제를 풀어보겠습니다.

 

이 문제는 특이하게 문자열을 정렬해야하는 문제입니다. 

처음에 입력을 받을때, 이름이 v인 vector에 입력을 받은 값이 원소로 있는 지 확인후에, 없으면 v.end()를 return 하기 때문에 비교연산자로 비교해주어서 만약 없으면 v에 입력받은 값을 대입해줍니다.

 

STL에 있는 sort 함수를 이용해서 문자들을 정렬하게 되면 사전순으로 정렬이 됩니다. 이를 이용해서,

문자열의 길이가 같으면 sort하고, 그게 아니라면 문자열의 길이가 짧은 순으로 오름차순으로 정렬하겠습니다.

 

코드:

#include <bits/stdc++.h>
#include <vector>

using namespace std;

int cp(string a, string b){
	if(a.length() == b.length())
		return a<b;
	return a.length()< b.length();
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	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.emplace_back(str);
		}
	}
	sort(v.begin(), v.end(), cp);

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

 

LIST

'BOJ 문제풀이' 카테고리의 다른 글

백준 2108번 c++ 풀이  (1) 2021.08.04
백준 10814 번 c++ 풀이  (0) 2021.08.03
백준 11651번 c++ 풀이  (0) 2021.08.03
백준 11650 c++ 풀이  (0) 2021.08.02
백준 1003번 c++ 풀이  (0) 2021.08.01