[ Baekjoon ] 2920번 ( Bronze II ) : 음계 (Java)

ma.caron_g·2021년 12월 14일
0
post-thumbnail

[ Baekjoon ] ㅇ번 ( Bronze ) : 제목 (Java)

1. Problem 📃

[ 음계 ]

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인지 판별하는 프로그램을 작성하시오.


2. Input 📇

[ 입력 ]

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

3. Output 📠

[ 출력 ]

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.


4. Example 📚

[ 입출력 예시 ]

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

5. Solution 🔑

  1. 음계가 총 8개로 이루어져있으므로 입력 받은 값들은 8개 주어지므로 8번 반복하여 입력 받은 값을 확인하여준다.

  2. 입력 받은 값과 이전에 입력했던 값을 비교해주기 위해 배열 8칸을 선언해주었다.
    음계 상태를 최종적으로 나타내줄 문자열 변수(judge)
    처음 받은 값은 건너뛰고 두 번째 인덱스부터 입력 받은 값에서 1 뺀 값이 이전 값과 같으면ascending, 1 더한 값이 이전 값과 같으면 descengding을 1이 아닌 다른 수랑 섞이는 경우에는 mixed를 judge에 넣고 다음은 비교해 볼 필요가 없으므로 break;한 후 judge를 출력한다.

6. Code 💻

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);
			
	}

}
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글