
풀이과정
입력받은 숫자들을 int type vector에 저장하고 vector의 맨 뒤 값(size-1)과 그 이전값(size-2)을 비교한다.
맨 뒤 값 - 1 == 그 이전값을 비교하여 참일 경우 pop_back을 하여 vector의 size가 0이 된다면 "ascending"을 출력하고 거짓일 경우 검사를 중단하고 "mixed"을 출력한다.
맨 뒤 값 + 1 == 그 이전값을 비교하여 참일 경우 pop_back을 하여 vector의 size가 0이 된다면 "descending"을 출력하고 거짓일 경우 검사를 중단하고 "mixed"을 출력한다.
코드
풀이1
더보기
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string CheckData(vector<int> v)
{
int check = 0; // -1 : descending, 0 : mixed, 1 : ascending
string Result = "";
vector<int> v1 = v;
for (int i = v1.size()-1; i >= 0; --i)
{
if (v1.at(i) == i + 1)
v1.pop_back();
}
if (v1.size() == 0) check = 1;
v1 = v;
for (int i = v.size() - 1; i >= 0; --i)
{
if (v.at(i) == 8- i)
v.pop_back();
}
if (v.size() == 0) check = -1;
if (check == 1)
Result = "ascending";
else if(check == -1)
Result = "descending";
else
Result = "mixed";
return Result;
}
int main()
{
vector<int> v;
v.reserve(8);
for (int i = 0; i < 8; ++i)
{
int input = 0;
cin >> input;
v.push_back(input);
}
cout << CheckData(v) << endl;
return 0;
}
풀이2
더보기
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
for (int i = 0; i < 8; ++i) {
int iNum = 0;
cin >> iNum;
v.push_back(iNum);
}
if (v.at(v.size() - 1) == 8)
{
while (v.size() != 0)
{
int curr = v.size() - 1;
if (curr > 0 && v.at(curr) - 1 == v.at(curr - 1)) v.pop_back();
else break;
if (v.size() == 1) v.pop_back();
}
if (v.size() == 0) cout << "ascending" << endl;
else cout << "mixed" << endl;
}
else if (v.at(v.size() - 1) == 1)
{
while (v.size() != 0)
{
int curr = v.size() - 1;
if (curr > 0 && v.at(curr) + 1 == v.at(curr - 1)) v.pop_back();
else break;
if (v.size() == 1) v.pop_back();
}
if (v.size() == 0) cout << "descending" << endl;
else cout << "mixed" << endl;
}
else {
cout << "mixed" << endl;
}
return 0;
}
'알고리즘(C++) > 백준 알고리즘' 카테고리의 다른 글
| [백준] C++ 10828번 : 스택 (0) | 2019.11.07 |
|---|---|
| [백준] C++ 1159번 : 농구 경기 (0) | 2019.11.07 |
| [백준] C++ 2953번 : 나는 요리사다 (0) | 2019.11.07 |
| [백준] C++ 2798번 : 블랙잭 (0) | 2019.11.07 |
| [백준] C++ 3052번 : 나머지 (0) | 2019.11.07 |