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;
}
Author And Source
이 문제에 관하여(2920번 ) 음계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kdo6301/2920번-음계저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)