728x90

문제

다장조는 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인지 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.






1. 풀이

생략


2. 소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<iostream>
 
int main() {
    int input[8];
    for(int t=0;t<8;t++){
        std::cin>>input[t];
    }
    int type;    //ascending은 1, descending은 2, 아니면 3을 넣어주자.
    //ascending
    if(input[0]==1){
        type =1;        //우선 1을 넣어준다.
        for(int t=0;t<8;t++){
            if(input[t]!= t+1) {
                type = 3;    //예외가 생기면 3을 넣어주고 반복을 끝낸다.
                break;
            }
        }
        ;
    }
    
    //descending    (위와 동일하다)
    else if(input[0]==8){
        type =2;
        for(int t=0;t<8;t++){
            if(input[t]!= 8-t) {
                type = 3;
                break;
            }
        }
    }
    else type==3;
 
    //type에 따라 출력을 결정짓는다.
    if(type==1std::cout<<"ascending\n";
    else if(type==2std::cout<<"descending\n";
    else if(type==3std::cout<<"mixed\n";
}
cs



3. 문제 출처

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


4. 참고

+ Recent posts