티스토리 뷰

728x90

1️⃣ 문제

현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다.

당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending, 8단에서 1단으로 연속적으로 변속한다면 descending, 둘다 아니라면 mixed 라고 정의했다.

 

변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지, 아니면 mixed인지 출력하는 프로그램을 작성하시오.

[제약조건]

주어지는 숫자는 문제 설명에서 설명한 변속 정도이며, 1부터 8까지 숫자가 한번씩 등장한다.

[입력형식]

첫째 줄에 8개 숫자가 주어진다.

[출력형식]

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

[입력예제1]
1 2 3 4 5 6 7 8
[출력예제1]
ascending
 
2️⃣ 정답코드
- 괜히 문제를 어렵게 푼 것 같은데, 1~8까지의 숫자가 한번만 존재한다고 했으니, 오름차순 배열과, 내림차순 배열을 만들어 배열이 같은지 확인해도 된다. 아니면, 입력값을 스트링으로 변환하여 "12345678"이나 "87654321" 과 값이 같은지 비교를 해도 된다.
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] data = new int[8];
        for (int i=0; i<8; i++) {
            data[i] = sc.nextInt();
        }
        boolean result = isAscending(data);
        if (result) System.out.println("ascending");
        else if(isDscending(data)) System.out.println("descending");
        else System.out.println("mixed");

    }
    public static boolean isAscending(int[] data) {
        boolean check = true;
        for (int i=1; i<data.length; i++) {
            if (data[i] < data[i-1]) {
               check = false;
            }
        }
        return check;
    }
    public static boolean isDscending(int[] data) {
        boolean check = true;
        for (int i=0; i<data.length-1; i++) {
            if (data[i+1] > data[i]) {
                check = false;
            }
        }
        return check;
    }
}​
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함