Coding Test/백준

백준 2920. 음계

so.so 2021. 3. 11. 11:34
 

공유 소스 보기

 

www.acmicpc.net

 

문제

다장조는 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 중 하나를 출력한다.

 


 

내가 작성한 코드

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int[] arr = new int[8];
        
        //통합
        String r = " ";
        
        //각각 배열
        int[] a = new int[8];
        for(int i = 0; i < a.length; i++){
            a[i] = i + 1;
        }
        
        int[] d = new int[8];
        for(int i = 0; i < d.length; i++){
            d[i] = 8 - (i);
        }
        
        for(int i = 0; i < arr.length; i++){
            arr[i] = sc.nextInt();
        }
        
        ///////////////////////////////
        //조건
        
        if(arr[0] == 1){
            for(int i = 0; i < arr.length; i++){
                if(arr[i] == a[i]){
                    r = "ascending";
                }else{
                    r = "mixed";
                    break;
                }
            }
        }else if(arr[0] == 8){
            for(int i = 0; i < arr.length; i++){
                if(arr[i] == d[i]){
                    r = "descending";
                }else{
                    r = "mixed";
                    break;
                }
            }
        }else{
            r = "mixed";
        }
        
        System.out.println(r);
    }
}

 

비교

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String r = " ";
        
            int a = sc.nextInt();
            int b = sc.nextInt();
            int c = sc.nextInt();
            int d = sc.nextInt();
            
            int e = sc.nextInt();
            int f = sc.nextInt();
            int g = sc.nextInt();
            int h = sc.nextInt();
            
            if(a == 1 && b == 2 && c == 3 && d == 4 && 
               e == 5 && f == 6 && g == 7 && h == 8){
                r = "ascending";
            }else if(a == 8 && b == 7 && c == 6 && d == 5 &&
                     e == 4 && f == 3 && g == 2 && h == 1){
                r = "descending";
            }else{
                r = "mixed";
            }
            
        System.out.print(r);
    }
}

 

왜그렇게 복잡하게 생각했을까 싶다.