2018년 8월 4일 토요일

백준 2920: 음계 풀이

문제 풀이
https://www.acmicpc.net/problem/2920

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <string.h> 
using namespace std;
 
/*
다장조는 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 중 하나를 출력한다.
*/
 
enum OUTPUT_CASE
{
    ASCENDING,
    DESCENDING,
    MIXED
};
 
string OutputString[] =
{
    "ascending",
    "descending",
    "mixed"
};
 
int main() 
{
    string input = "";
    getline(cin, input);
    
    OUTPUT_CASE output = OUTPUT_CASE::MIXED;
    for(int loopCount = 0; loopCount < 7*2; loopCount += 2)
    {
        if(0 == loopCount)
        {
            // '1' == 49
            if(49 == input.at(loopCount))
                output = OUTPUT_CASE::ASCENDING;
            else if(56 == input.at(loopCount))
                output = OUTPUT_CASE::DESCENDING;
            else
                break;
        }
        
        if(output == OUTPUT_CASE::ASCENDING)
        {
            if(input.at(loopCount) + 1 != input.at(loopCount+2))
            {
                output = OUTPUT_CASE::MIXED;
                break;
            }
        }
        else if(output == OUTPUT_CASE::DESCENDING)
        {
            if(input.at(loopCount) - 1 != input.at(loopCount+2))
            {
                output = OUTPUT_CASE::MIXED;
                break;
            }
        }
    }
    
    cout << OutputString[output] << endl;
    return 0;
}
cs

댓글 없음:

댓글 쓰기

A*, JPS 길찾기 알고리즘 시뮬레이션 사이트

https://qiao.github.io/PathFinding.js/visual/ 길 찾기 알고리즘 시행 과정을 보여주는 사이트다. 링크 메모..