For Beginners

2920번: 음계 본문

2920번: 음계

728x90

https://www.acmicpc.net/problem/2920

 

2920번: 음계

문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을

www.acmicpc.net

음 일단 숫자의 증감도를 측정하여

그 증감도의 비중이 달라지는 경우 믹스가 되고, 안달라지는 경우, 어센딩 또는 디센딩이 되게 출력하게 하면 될 것 같다.

음 그리고 애초에 음계에서 중복되는 숫자가 없기 때문에 그냥 이전 숫자에 비해서 증가했는지 감소했는지만 따지면 될 것 같다.

#include <iostream>
using namespace std;
int main() {
	
	int input ,input2 = 0;
	int status = 0;
	int bef_status = 0;
	
	cin >> input;
	int A = input;

	cin >> input2;
	int B = input2;
	status = B - A;
	A = input2;

	//초기값으로 차이 구하고, 변수 다 복구했음
	//bef_status 는 이전 변수의 차이를 말함
	//status는 현재 변수의 차이를 말함


	for (int i = 1; i < 7; i++) {

		bef_status = status;
		//이전 변수의 차이로 변수값 이동
		//ascending인지, descending인지, 아니면 mixed
		cin >> input;
		B = input;
		status = B - A;
		if (bef_status != status) {
			cout << "mixed";
			return 0;
		}
		else {
			A = B;
			//변수 이동
		}
	}
	if (status < 0) {
		cout << "descending";
	}
	else {
		cout << "ascending";
	}

	return 0;
}