[백준 알고리즘] 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인지 판별하는 프로그램을 작성하시오.

접근 방법:

단순한 문제였다. 그냥 소팅을 확인하면 되는 문제라 쉽게 해결했다. 배열의 요소들이 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;
}

전여훈
Written by@전여훈 (Click Me!)
고민이 담긴 코드를 만들자, 고민하기 위해 공부하자.