Dev538

[백준] [JAVA/2920번] 음계 본문

Algorithm

[백준] [JAVA/2920번] 음계

Dev538 2019. 12. 29. 02:19

문제

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

 


풀이 설명

8개의 음표(입력값) 을 배열에 저장하여 배열 크기만큼 반복하여 확인한다.

조건이 배열에 저장된 0번째값이 1(asc)이거나, 8(desc) 이어야하고 하고, 순번대로 값이 일정한지, 아닌경우에는 mixed 이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.io.*;
public class baekjoon_2920 {
    public static void main(String[] args){
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int array[] = new int[8];
        String result = "";
        boolean flag = true;
 
        try {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for(int i = 08 > i; i++ ){
               array[i] = Integer.parseInt(st.nextToken());
 
               if(flag == true && array[0== 1 &&  array[i] == i + 1){
                   result = "ascending";
                   flag = true;
 
               }else if(flag == true && array[0== 8 && array[i] == 8 - i){
                   result = "descending";
                   flag = true;
 
               }else {
                   result = "mixed";
                   flag = false;
                }
            }
 
            bw.write(result+"\n");
            bw.flush();
 
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            if(br!=null)try{br.close();}catch(IOException e){}
            if(bw!=null)try{bw.close();}catch(IOException e){}
        }
    }
}
 
 
Comments