© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2920 - 음계

2023-09-12
BOJ
브론즈 II
java
원본 문제 보기
구현

문제

BOJ 2920 - 음계

1~8의 숫자가 주어질 때, 오름차순이면 "ascending", 내림차순이면 "descending", 둘 다 아니면 "mixed"를 출력한다.

입력

첫째 줄에 8개의 숫자가 주어진다 (1~8이 한 번씩).

출력

ascending, descending, mixed 중 하나를 출력한다.

예제

입력출력
1 2 3 4 5 6 7 8ascending
8 7 6 5 4 3 2 1descending

풀이

인접한 원소를 비교하여 증가/감소 패턴을 판별한다.

  1. 8개의 수를 배열에 저장한다
  2. 인접한 원소 차이가 +1이면 "ascending", -1이면 "descending"으로 설정한다
  3. 두 패턴이 섞이면 "mixed"로 출력하고 종료한다

핵심 아이디어: 연속된 두 수의 차이가 일관적이면 오름/내림, 그렇지 않으면 mixed이다.

코드

package day599;
 
import java.util.Scanner;
 
public class Day585BOJ2920음계 {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] inputs = new int[8];
    for (int i = 0; i < inputs.length; i++)
      inputs[i] = sc.nextInt();
    sc.close();
 
    String output = "";
    for (int i = 0; i < inputs.length - 1; i++) {
      if (inputs[i] == inputs[i + 1] - 1)
        output = "ascending";
      else if (inputs[i] == inputs[i + 1] + 1)
        output = "descending";
      else {
        output = "mixed";
        break;
      }
    }
    System.out.println(output);
  }
}

복잡도

  • 시간: O(1) — 고정 8개 원소
  • 공간: O(1) — 고정 배열 8개