728x90
반응형
https://www.acmicpc.net/problem/11536
문제
악독한 코치 주혁은 선수들을 이름 순으로 세우는 것을 좋아한다. 더 악독한 것은 어떤 순서로 서야할지도 알려주지 않았다! 선수들의 이름이 주어질 때 어떤 순서로 이루어져있는지 확인해보자.
단순한 문제이다.
주어진 문자열들이 오름차순으로 정렬되어있는 상태인지, 내림차순으로 되어있는 상태인지, 두 상태 모두 해당 안되는지 확인만 해주면 되는 문제이다.
vector에 문자열로 입력받은 것을 C++의 algorithm헤더파일에서 제공하는 sort를 이용하면 default값으로 오름차순 정렬을 수행해준다. 하나의 또 다른 벡터를 임시적으로 복사받아 정렬을 수행한 후 결과를 확인만 해주면 된다.
#include <iostream>
#include <queue>
#include <vector>
#include <stack>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <algorithm>
#include <cmath>
#include <ctime>
#define fastio ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
#define ENDL cout << endl
#define ll long long
#define ull unsigned long long
#define INF 987654321
#define Mod 1000000009
#define endl '\n'
#define pil pair<int,int>
using namespace std;
vector<string> input() {
int N;
cin >> N;
vector<string> name;
for (int i = 0; i < N; i++) {
string s; cin >> s;
name.push_back(s);
}
return name;
}
string solution(vector<string>& name) {
int index = 0;
vector<string> temp = name;
sort(temp.begin(), temp.end());
bool isIncreasing = false;
for (int i = 0; i < temp.size(); i++) {
if (name[i] != temp[i]) {
isIncreasing = true;
break;
}
}
if (!isIncreasing) return "INCREASING";
bool isDecreasing = false;
for (int i = temp.size() - 1; i >= 0; i--) {
if (name[index++] != temp[i]) {
isDecreasing = true;
break;
}
}
if (!isDecreasing) return "DECREASING";
return "NEITHER";
}
int main() {
fastio;
vector<string> name = input();
cout << solution(name) << endl;
return 0;
}
728x90
반응형
'BOJ > 정렬' 카테고리의 다른 글
[C/C++] 백준 - 효정과 새 모니터 (0) | 2022.08.12 |
---|---|
[C/C++] 백준 - 10867번 : 중복 빼고 정렬하기 (0) | 2021.08.03 |
[C/C++] 백준 - 2170번 : 선 긋기 (0) | 2021.08.02 |
[C/C++] 백준 - 8979번 : 올림픽 (0) | 2021.08.01 |
[C/C++] 백준 - 2910번 : 빈도 정렬 (0) | 2021.07.31 |