본문 바로가기
알고리즘 풀이/소프티어

[level 2] 8단 변속기(JAVA)

by cornsilk-tea 2023. 5. 10.

문제 요약

현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다.
당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending, 8단에서 1단으로 연속적으로 변속한다면 descending, 둘 다 아니라면 mixed라고 정의했다.
변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지, 아니면 mixed인지 출력하는 프로그램을 작성하시오.


문제 분석

오름차순과 내림차순의 기준을 구한 후 순차적으로 확인한다.


코드

import java.util.*;
import java.io.*;


public class Main
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");  
        int[] arr = Arrays.stream(input).mapToInt(s -> Integer.parseInt(s)).toArray();
        System.out.println(check(arr));
    }
    public static String check(int[] arr){
        boolean std = true;
                if(arr[0] + 1 == arr[1]){
                    // 오름차순
                    std = true;
                }
                else if(arr[1] + 1 == arr[0]){
                    // 내림차순
                    std = false;
                }
                else{
                    return "mixed";
                }
        for(int i = 2; i < arr.length; i++){
            //오름차순일때
            if(std == true && arr[i] != arr[i-1]+1){
                return "mixed";
            }
            // 내림차순일때
            if(std == false && arr[i] != arr[i-1]-1){
                return "mixed";
            }
        }
        return std? "ascending":"descending";
    }
}

정리

새로 배운 내용

없음

개선할 점

boolean변수로 오름차순과 내림차순을 만들고  아래 확인하는 작업을 하나로 합치면 좀 더 간결할것같다.

더 찾아볼만한 사항