[ Baekjoon ] ㅇ번 ( Bronze ) : 제목 (Java)
https://www.acmicpc.net/problem/2920
[ 문제 ]
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.
1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.
연주한 순서가 주어졌을 때, 이것이 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 7 2 6 3 5 4 | mixed |
- 음계가 총 8개로 이루어져있으므로 입력 받은 값들은 8개 주어지므로 8번 반복하여 입력 받은 값을 확인하여준다.
- 입력 받은 값과 이전에 입력했던 값을 비교해주기 위해 배열 8칸을 선언해주었다.
음계 상태를 최종적으로 나타내줄 문자열 변수(judge)
처음 받은 값은 건너뛰고 두 번째 인덱스부터 입력 받은 값에서 1 뺀 값이 이전 값과 같으면ascending, 1 더한 값이 이전 값과 같으면 descengding을 1이 아닌 다른 수랑 섞이는 경우에는 mixed를 judge에 넣고 다음은 비교해 볼 필요가 없으므로 break;한 후 judge를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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[] scale = new int[8];
String judge = "ascending";
for(int i=0; i<8; i++) {
scale[i] = Integer.parseInt(st.nextToken());
if(i>0) {
if(scale[i-1] == scale[i]+1) {
judge = "descending";
}
else if(scale[i-1] == scale[i]-1) {
judge = "ascending";
}
else {
judge = "mixed";
break;
}
}
}
System.out.println(judge);
}
}