December 23, 2019
다장조는 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인지 판별하는 프로그램을 작성하시오.
단순한 문제였다. 그냥 소팅을 확인하면 되는 문제라 쉽게 해결했다. 배열의 요소들이 1씩 늘어나거나 1씩 줄어들 때마다 오름차순, 내림차순 카운트를 하나씩 올리고 최종적으로 7개가 되는 플래그를 정답으로 선택하면 된다.
#include <iostream>
using namespace std;
int main (){
int drm[8];
int a = 0, d = 0;
for (int i = 0 ; i < 8 ; i++){
cin >> drm[i];
}
for (int i = 0 ; i < 7 ; i++){
if (drm[i]-drm[i+1] == -1) a++;
else if (drm[i]-drm[i+1] == 1) d++;
}
if (a == 7) cout << "ascending" << endl;
else if (d == 7) cout << "descending" << endl;
else cout << "mixed" << endl;
return 0;
}