알고리즘 공부/CodeUp 문제풀이

코드업 2008:오름차순? 내림차순? 2(C)

티들 2023. 9. 28. 21:45

문제 설명

숫자에 관심이 많은 영일이는 수열을 보고 오름차순 수열인지 내림차순 수열인지 판단하려고 한다.

오름차순이란 작은 수부터 큰 수 순서로 나열한것을 말하고, 내림차순은 그 반대인 경우이다.

이 두 경우가 아닌 경우는 '섞임'으로 판단한다.

n개의 수가 주어지면, '오름차순', '내림차순', '섞임'을 판단하는 프로그램을 작성하시오.

예를 들어, 1 1 2 3 5 5 6인 경우 '오름차순', 7 6 6 5 3 1인 경우 '내림차순',  21 22 21 22인 경우 '섞임'으로 판단한다.

만약 모두 같은 수가 입력되면 '섞임'으로 판단한다.

 

입력

첫째 줄에 데이터의 개수 n이 주어진다. (2≤n≤100)

둘째 줄에 n개의 수가 공백으로 분리되어 입력된다.(각각의 수는 1~200인 정수)

 

출력

수의 순서가 오름차순인 경우 '오름차순', 내림차순인 경우 '내림차순', 둘 다 아닐 경우 '섞임'을 출력한다.

 

입력 예시

7

2 3 5 5 6 6 7

 

출력 예시

오름차순

 

나의 코드

#include <stdio.h>

int main()
{
    int n, num[100], i;	// 변수 선언
    int same = 0, a = 0, b = 0;
    scanf("%d", &n);	// 반복 횟수 받기
    for(i=0;i<n;i++)
    {
        scanf("%d ", &num[i]);	// 입력
        if(i != 0)
        {
            if(num[i] == num[i-1]) same++;	// 조건에 따라 변수증가
            else if(num[i] > num[i-1]) a++;
            else if(num[i] < num[i-1]) b++;
        }
    }

    if(a && b || same == n-1)	// 똑같거나 중복이 다라면
        printf("섞임");
    else if(a)	// a가 0이 아니라면
        printf("오름차순");
    else if(b)	// b가 0이 아니라면
        printf("내림차순");

    return 0;
}

 

문제 바로가기: https://codeup.kr/problem.php?id=2008&rid=0