코딩/백준 문제 (브론즈)

[백준/2920/C언어] 음계 _ 풀이

룻밤 2024. 1. 13. 18:18

 

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


풀이

#include <stdio.h>

int main() {
	int arr[8];
	int flag = 3;	// ascending=1, descending=2, mixed=3

	// 8개 음계 입력 받기
	for (int i = 0; i < 8; i++) {
		scanf("%d", &arr[i]);
	}

	// 첫번째 음계부터 차례로 비교
	for (int i = 0; i < 8; i++) {
		// ascending
		if (arr[0] == 1) {
			if (arr[i] == i + 1)
				flag = 1;
			else {	// 오름차순 음계가 아니라면 mixed
				flag = 3;
				break;
			}
		}
		// descending
		else if (arr[0] == 8) {
			if (arr[i] == 8 - i)
				flag = 2;
			else {	// 내림차순 음계가 아니라면 mixed
				flag = 3;
				break;
			}
		}
		// 첫번째 음계가 0 또는 8이 아니라면 무조건 mixed
		else break;
	}

	if (flag == 1)
		printf("ascending");
	else if (flag == 2)
		printf("descending");
	else printf("mixed");
	return 0;
}

 

조건문의 이해도가 필요