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 |
댓글 없음:
댓글 쓰기