[ 문제 ]
다장조는 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 중 하나를 출력한다.
[ 작성한 코드 ]
#include <stdio.h>
int main()
{
int N[8] = {0};
int i;
int j = 1, k = 1; //j는 ascending일때 , k는 descending일때
for(i = 0; i < 8; i++)
{
scanf("%d",&N[i]);
}
for(i = 0; i < 8; i++)
{
if(N[i] != i+1) // 1 2 3 4 5 6 7 8 순서일때
{
j = 0;
}
if(N[i] != 8-i) // 8 7 6 5 4 3 2 1 순서일때
{
k = 0;
}
}
if(j == 1)
{
printf("ascending");
}
else if(k == 1)
{
printf("descending");
}
else
{
printf("mixed");
}
return 0;
}
입력된 숫자가 오름차순인지 내림차순인지만 판별하면 되는 문제이다.
그럼에도 몇번을 틀렸는데 일단 오름차순인지 내림차순인지를 판별하는 반복문에서 if - if 가 아닌 if - else if를 사용하는 실수를 했고 초기값을 잘 못 설정하는등의 실수를 했다.
문제를 풀 때 최대한 빨리 풀어보려는데에 초점을 두지말고, 시간이 조금 더 걸리더라도 실수를 줄여야겠다.
알고리즘 분류
- 구현
'백준 알고리즘 코딩' 카테고리의 다른 글
[C언어] 백준 3003번 킹,퀸,룩,비숍,나이트,폰 (0) | 2025.03.29 |
---|---|
[C언어][오답] 백준 32978번 아 맞다 마늘 (0) | 2025.03.28 |
[C언어] 백준 10817번 세 수 (0) | 2025.03.28 |
[C언어] 백준 2577번 숫자의 개수 (0) | 2025.03.27 |
[C언어] 백준 10250번 ACM호텔 (0) | 2025.03.27 |