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인지 판별하는 프로그램을 작성하시오.

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.


Solution

어렵게 생각하지말고 기준을 세우자.

1) 입력한 첫번째 원소가 1인경우.

for문을통해 두번째 원소부터 8번째 원소까지 검사하는데,
if문을 통해 점점 1씩 커지는지 확인한다.
-> 1씩 커지는게 아니라면 바로 for문 종료하고 mixed 프린트하고 프로그램 종료.

-> for문 첫번째 순환에서 1씩 커지는게 맞다면 틀릴때까지 계속 for문 돌린다(continue)
-> for문이 이상없이 끝났다? -> ascending

2) 입력한 첫번째 원소가 8인경우.

1)과 같은 방식으로 진행. 단지 if문을 통해 점점 1씩 커지는게아니라 작아지는지 확인해야함.
작아진다면 -> descending
아니라라면 -> mixed

3) 입력한 첫번째 원소가 1,8 둘다 아닐경우 -> mixed

배운점 : return 0;을 잘이용하자!!.!_

#include <stdio.h>

int a[8];
int k;
int main(){
	
	for(int i=0;i<8;i++){
		scanf("%d",&a[i]);
	
	}
	
	if (a[0]==1)
	{
		for(int i=1;i<8;i++)
		{
			if(a[i]!=a[i-1]+1){
			printf("mixed");
			return 0;}
			
			else continue;
		}
		
		printf("ascending");
		return 0;
		}
	
	
	else if(a[0]==8){
		
		for(int i=1;i<8;i++)
		{
			if(a[i]!=a[i-1]-1){
			printf("mixed");
			return 0;}
			
			else continue;
		}
		
		printf("descending");
		return 0;
		}
	
	
else{
	printf("mixed");

}			
	
return 0;
}

좋은 웹페이지 즐겨찾기