문제 풀이/소프티어

[소프티어] 8단 변속기(JAVA)

27200 2025. 3. 11. 21:35

문제

https://softeer.ai/practice/6283


풀이(4분)

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[8];// 1~8까지의 숫자를 저장할 배열

        for(int i = 0; i < 8; i++){
            arr[i] = Integer.parseInt(st.nextToken()); // 입력값 저장
        }

        char c;

        if(arr[0] == 8){ // 시작이 8이라면
            c = 'd'; // 기본을 descending로
        }else if(arr[0] == 1){ // 시작이 1이라면
            c = 'a'; // 기본을 ascending로
        }else{ // 시작이 8 또는 1이 아니라면 반드시 "mixed" 출력하고 끝
            System.out.println("mixed");
            return;
        }

        for(int i = 1; i < 8; i++){
            if(c == 'd'){ // 기조가 무엇인지
                if(arr[i] + 1 != arr[i-1]){ // 이전 값과 비교
                    System.out.println("mixed");
                    return;
                }
                continue;
            }
            if(c == 'a'){ // 기조가 무엇인지
                if(arr[i] - 1 != arr[i-1]){ // 이전 값과 비교
                    System.out.println("mixed");
                    return;
                }
            }
        }

        if(c == 'd'){ // 여기까지 왔고, d라면 descending 출력
            System.out.println("descending");
            return;
        }

        System.out.println("ascending"); // 여기까지 왔다면 ascending 출력

    }

}

문제 풀이 전략

 

초기 시작 값을 1 또는 8 중 무엇인지 정한다.

 

1이라면 ascending를 8이라면 ascending를 기본 기조로 잡는다.

초기 시작값이 1 또는 8이 아니라면 반드시 mixed 변속이다.

 

인덱스 1부터 끝까지 비교를 해나가면서 기조에 맞는 변화가 아니라면 mixed를 출력하고 종료한다.

 

중간에 종료되지 않았다면 기조에 따른 출력을 한다.

 

'문제 풀이 > 소프티어' 카테고리의 다른 글

[소프티어] 징검다리(JAVA)  (0) 2025.03.13
[소프티어] 바이러스(JAVA)  (0) 2025.03.12
[소프티어] 금고털이(JAVA)  (0) 2025.03.11
[소프티어] 성적 평균(JAVA)  (0) 2025.03.11
[소프티어] 나무 공격(JAVA)  (0) 2025.02.16