반응형
백준 - 단계별로 풀어보기 [1181]
https://www.acmicpc.net/problem/1181
문제
풀이
string 벡터를 선언하고, string의 비교 조건을 str.length() 순으로, 만약 같을 경우엔 사전순으로 비교하게끔 하는 compare 함수를 만들어서 sort함수로 정렬하면 풀이가 가능하다.
또한, 출력부에서 만약 동일한값이 이미 출력됬을경우엔 출력하지 않도록 설정해주면 풀이가 가능하다.
코드
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(string a, string b) {
int i = 0;
if(a.length() == b.length())
{
for(int i = 0; i < a.length(); i++)
{
if(a[i] != b[i])
return a[i] < b[i];
}
}
return a.length() < b.length();
}
int main() {
int num;
string tmp;
cin >> num;
vector<string> arr;
for(int i = 0; i < num; i++)
{
cin >> tmp;
arr.push_back(tmp);
}
sort(arr.begin(),arr.end(),compare);
cout << arr[0] << '\n';
for(int i = 1; i < num; i++)
{
if(arr[i-1] == arr[i])
continue;
cout << arr[i] << '\n';
}
}
평가
STL Sort를 사용하되, compare함수를 얼마나 자유자재로 사용할 수 있는가를 묻는 문제인 듯하다.
compare함수를 필요에 맞게 바꾸는 연습을 하고 넘어가도록 하자.
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 5543번 상근날드 C++ 풀이 (0) | 2020.03.11 |
---|---|
[백준 / BOJ] - 10814번 나이순 정렬 C++ 풀이 (2) | 2020.03.04 |
[백준 / BOJ] - 11651번 좌표 정렬하기2 C++ 풀이 (0) | 2020.03.03 |
[백준 / BOJ] - 11650번 좌표 정렬하기 C++풀이 (0) | 2020.03.03 |
[백준 / BOJ] - 1427번 소트인사이드 C++ 풀이 (0) | 2020.03.03 |