백준 algorithm

백준 2920 - 음계

cosmohoo 2019. 11. 4. 21:41
반응형

문제 설명

배열을 이용해서 오름차순인지, 내림차순인지, 섞여 있는 배열인지 확인하는 문제이다. 

본인은 오름차순과 내림차순을 판별하는 함수를 만들고 두 함수 모두 false일 경우, mixed로 판별하였다. 

아래와 같은 방법말고, 입력을 받으며 다음에 오는 숫자가 오름차순인지 내림차순인지 판별하여 해당 배열을 판별하는 방법 또한 있다. 그 방법이 훨씬 더 효율적이다. 

#include <iostream>
using namespace std;

bool ascending(int arr[])
{
	int cnt=0;
	for (int i = 0; i < 7; i++)
	{
		if (arr[i] + 1 == arr[i + 1]) cnt++;
	}
	if (cnt == 7)return true;
	else return false;
}

bool descending(int arr[])
{
	int cnt=0;
	for (int i = 0; i < 7; i++)
	{
		if (arr[i] - 1 == arr[i + 1]) cnt++;
	}
	if (cnt == 7)return true;
	else return false;
}

int main(void)
{
	int arr[10];

	for (int i = 0; i < 8; i++)
	{
		cin >> arr[i];
	}

	if(ascending(arr))
	cout << "ascending" << '\n';
	else if (descending(arr))
	{
		cout << "descending" << '\n';
	}
	else cout << "mixed" << '\n';
	return 0;
}
반응형