문제
해결 방안 고민
•
1 2 3 4 5 6 7 8 - ascending
◦
각각의 숫자들이 공차가 +1인 등차수열 형태로 구성되어 있다.
•
8 7 6 5 4 3 2 1 - descending
◦
각각의 숫자들이 공차가 -1인 등차수열 형태로 구성되어 있다.
•
8 1 7 2 6 3 5 4 - 어떠한 규칙도 없는 수열이다.
•
수열 형태를 통해 규칙을 확인하였다.
해결 방법
•
8개의 숫자들을 비교하는 경우의 수는 7가지이다.
◦
(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)
◦
7번 증가하거나 7번 감소하는 경우의 수를 카운트하여 ascending, descending을 구분한다.
◦
만약에 i번째와 i + 1 번째의 숫자 관계가 1씩 증가 or 1씩 감소하는 경우가 아니라면 즉시 비교를 멈춘다.
코드
package algo250222;
import java.io.*;
import java.util.*;
// 음계 - 브론즈 2
public class Baek2920 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int[] arr = new int[8];
for (int i = 0; i < 8; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int ascend = 0; // 7 이면 ascending
int descend = 0; // 7 이면 descending
for (int i = 0; i < 8; i++) {
if (i != 7 && arr[i + 1] == arr[i] + 1) {
ascend++;
} else if (i != 7 && arr[i + 1] == arr[i] - 1) {
descend++;
} else {
break;
}
}
if (ascend == 7) {
bw.write("ascending");
} else if (descend == 7) {
bw.write("descending");
} else {
bw.write("mixed");
}
bw.flush();
bw.close();
br.close();
}
}
Java
복사