문제
1~8의 숫자가 주어질 때, 오름차순이면 "ascending", 내림차순이면 "descending", 둘 다 아니면 "mixed"를 출력한다.
입력
첫째 줄에 8개의 숫자가 주어진다 (1~8이 한 번씩).
출력
ascending, descending, mixed 중 하나를 출력한다.
예제
| 입력 | 출력 |
|---|---|
1 2 3 4 5 6 7 8 | ascending |
8 7 6 5 4 3 2 1 | descending |
풀이
인접한 원소를 비교하여 증가/감소 패턴을 판별한다.
- 8개의 수를 배열에 저장한다
- 인접한 원소 차이가 +1이면 "ascending", -1이면 "descending"으로 설정한다
- 두 패턴이 섞이면 "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개