https://www.acmicpc.net/problem/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
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
 
int now = 0;
int umgye[8= { 0, };
 
int main() {
    //freopen("test.txt", "r", stdin);
    for (int i = 0; i < 8; i++) {
        cin >> umgye[i];
    }
    for (int i = 0; i < 7; i++) {
        if (umgye[i + 1== umgye[i] + 1)now = 1;
        else if (umgye[i + 1== umgye[i] - 1)now = 2;
        else {
            now = 3;
            break;
        }
    }
    switch (now) {
    case 1cout << "ascending";
        break;
    case 2cout << "descending";
        break;
    case 3cout << "mixed";
        break;
    }
}
cs


이렇게 풀이했습니다.

현재상태를 now로 저장을해서 1인경우는 ascending 2인경우에는 descending 3인경우는 mixed로 출력하게했습니다

다음요소가 현재요소보다 1이 크다면 계속 1을 대입하고 1보다 작은순간은 2를 넣습니다. 

이게 1씩증가하는 수만의 조합이라면 2차이가 날 수 없기 때문에 차이가 2가 나는순간 바로 mixed로 판별이되고 break로 구문을 빠져나오게 됩니다.


'재미있는공부이야기 > 알고리듬' 카테고리의 다른 글

KMP 알고리즘  (0) 2019.02.15
3장. 문자열  (0) 2019.02.13
2장. 정렬  (0) 2019.02.09
백준 2846번 오르막길  (0) 2019.02.09
1장. 배열  (0) 2019.02.07

+ Recent posts