코딩테스트/백준

boj2920 - 음계 (브론즈2)

개발자딥게 2022. 7. 16. 21:59
반응형

문제 (https://www.acmicpc.net/problem/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 중 하나를 출력한다.

 


내 풀이 (https://github.com/yj0903/boj_java/blob/master/src/boj2920.java)

 

(1) ascending의 경우, 전체 데이터에서 data [ i-1 ] < data [ i ]를 충족해야 한다.

단 1개의 값이라도 이를 충족하지 않는 경우 ascending이라 할 수 없다.

 

(2) descending의 경우, 전체 데이터에서 data [ i-1 ] > data [ i ]

단 1개의 값이라도 이를 충족하지 않는 경우 descending이라 할 수 없다.

 

(3) mixed의 경우, (1)에도 해당 안되고 (2)에도 해당 안되는 경우를 가리킨다.

 

import java.util.Scanner;

public class boj2920 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] data = new int[8];
        boolean ascending = true;
        boolean descending = true;

        for (int i = 0; i < 8; i++) {
            data[i] = sc.nextInt();
        }

        for (int i = 1; i < 8; i++) {
            if (data[i - 1] < data[i]) {
                descending = false;
            }
            if (data[i - 1] > data[i]) {
                ascending = false;
            }
        }
        if (ascending) {
            System.out.println("ascending");
        } else if (descending) {
            System.out.println("descending");
        } else {
            System.out.println("mixed");
        }

    }
}

 

 

반응형