[C언어] 백준 2920 : 음계

mainsain·2022년 3월 16일
0

백준

목록 보기
14/64

내가 이해한 방법

  • 아 12345678 입력받으면 asc 역순이면 des else로 mixed하면 끝나겠구나 생각했다.

  • 첫번째 숫자가 1일때, 8일때, else로 구분을 해주었다. 근데 내 코드 다시 보는데 굳이 1,8일때 구분 안했어도 됐겠다 싶다. 괜히 더 더러워짐

  • 1일때, arr[i++] == i + 1이면 count++로 count를 세줌

  • count == 8이면 asc. des도 같은 논리

좀 가독성있게 수정할까 했는데 음.. 제출한 파일 그대로 냄 그냥

내가 푼 방법

#include <stdio.h>

int main()
{
    int arr[8];
    int i;
    int count = 0;
    i = 0;
    while (i < 8)
    {
        scanf("%d", &arr[i]);
        i++;
    } // 입력받음
    i = 0;
    if (arr[0] == 1)
    {
        while (i < 8)
        {
            if (arr[i] == i + 1)
            {
                count++;
            }
            i++;
        } // 1 2 3 4 ~ 8인지 체크
        if (count == 8) // 각각 다 맞으면 count가 8이다.
            printf("ascending");
        else // 하나라도 어긋나면 mixed
            printf("mixed");
    }
    else if (arr[0] == 8)
    {
        count = 0;
        int j = 8;
        while (i < 8)
        {
            if (arr[i] == j) // j = 8 하고 j--해줌
            {
                count++;
            }
            i++;
            j--;
        }
        if (count == 8) // 위와 같은 논리로 다 맞으면 count는 8
            printf("descending");
        else // 하나라도 어긋나면 mixed
            printf("mixed");
    }
    else // 첫 자리가 1도 아니고 8도 아니면 mixed
    printf("mixed");
}

처음에 말했던 첫글자 = 1 or 8 이거 다 지워버리면 조금 더 나았겠다 싶다.

profile
새로운 자극을 주세요.

0개의 댓글