본문 바로가기

백준 문제풀이/1차원 배열

백준 2920 C / 단계별로 풀어보기 - 1차원 배열 3

 

안녕하세요.

이번에는 3번째, 2920 번 음계 입니다. (BOJ 2920 C)

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부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을

www.acmicpc.net

 

1 2 3 4 5 6 7 8 이면 ascending,

8 7 6 5 4 3 2 1 이면 descending,

아니면 mixed 네요.

 

처음부터 끝까지 돌면서 확인해줘야겠습니다.

왜냐하면 1 2 3 4 5 6 8 7 이런 식으로 입력될 수도 있으니까요.

 

이전 수보다 1이 증가되는 형태로 쭉 유지되면 ascending 일 거고,

이전 수보다 1이 감소되는 형태로 쭉 유지되면 descending 일 거고,

중간에 분위기 한 번 깨주면 mixed 

 

이런 식으로 코드를 짜보았습니다.


#include <stdio.h>

int main()
{
	int arr[8] = { 0 };
	int i = 0, flag = 0;
	for (i = 0; i < 8; i++)
		scanf("%d", &arr[i]);

	for (i = 1; i < 8; i++)
	{
		if (arr[i - 1] + 1 == arr[i])
			flag = 1;
		else if (arr[i - 1] - 1 == arr[i])
			flag = 2;
		else
		{
			flag = 0;
			break;
		}
	}

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

 

감사합니다.