백준알고리즘

[6단계 1차원 배열 사용하기]2920번

moon.i 2018. 1. 10. 18:10

문제

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

예제 입력 

1 2 3 4 5 6 7 8

예제 출력 

ascending

예제 입력 2 

8 7 6 5 4 3 2 1

예제 출력 2 

descending

예제 입력 3 

8 1 7 2 6 3 5 4

예제 출력 3 

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
import java.util.*;
public class Main {
 
    public static void main(String[] args) {
        Scanner sca = new Scanner(System.in);
        
        int line[] = new int[8];
        for(int i=0; i<8; i++){
            line[i] = sca.nextInt();
            
        }
        
        int temp =0;
        for(int i=0; i<7; i++){
            if(i==0){
                temp = line[i]- line[i+1];
            }else if(temp != line[i]-line[i+1]){
                System.out.println("mixed");
                break;
            }else if(i==6){
                if(line[0]==1){
                    System.out.println("ascending");
                }else{
                    System.out.println("descending");
                }
            }
        }
    }
 
 
}
 
 
cs


[풀이]

-숫자 8개를 입력받아 배열에 저장한다.

-처음 인덱스의 배열값에서 두번째 인덱스의 배열값을 빼서 그값을 temp에 저장하여 초기화한다.

-입력받은 배열이 등차수열을 이룬다면 mixed 가 아닌것이므로 

-temp에 저장한 값이 for문을 도는동안 i 인덱스값에서 i+1인덱스값을 뺀 값과 다르면 등차수열이 아니므로 mixed를 출력하고 for문을 벗어난다.

-마지막 인덱스까지 검사를 마치게 된다면 등차수열을 이루는 것이므로 그것이 내림차순인지 오름차순인지 판별한다.

-배열의 첫번째 인덱스를 검사하여 그수가 1이면 asce 아니면 desc를 출력한다.