알고리즘/문제 풀이
2920번: 음계
Themion
2021. 12. 21. 20:29
https://www.acmicpc.net/problem/2920
2920번: 음계
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8
www.acmicpc.net
음을 8개 입력받은 뒤, 각 음을 이전 음과 비교했을 때 현재 음이 이전 음보다 크다면 descending이 아니고, 현재 음이 이전 음보다 작다면 ascending이 아니다. 이를 모든 음에 대해 조사한다면 ascending인지, descending인지, 아니면 mixed인지 판별할 수 있다.
#include <cstdio>
int main() {
// asc: 연주가 ascending이라면 true, 아니라면 false
// des: 연주가 descending이라면 true, 아니라면 false
bool asc = true, des = true;
// 연주한 음 여덟 개를 차례로 받아온다
int input[8];
// 문제의 조건을 입력받은 뒤
for (int i = 0; i < 8; i++) scanf("%d", input + i);
// 각 음을 이전 음과 비교한다
// 음이 한번이라도 올라간다면 이 연주는 descending이 아니다
// 음이 한번이라도 내려간다면 이 연주는 ascending이 아니다
for (int i = 1; i < 8; i++) {
if (input[i - 1] > input[i]) asc = false;
if (input[i - 1] < input[i]) des = false;
}
// asc와 des를 이용해 이 연주의 종류를 파악한 뒤 출력한다
printf("%s\n", (asc ? "ascending" : (des ? "descending" : "mixed")));
return 0;
}