알고리즘 연습

[2920] 음계 - Java

밀깜 2021. 11. 4. 23:30

https://www.acmicpc.net/problem/2920

 

2920번: 음계

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8

www.acmicpc.net

 

1. 배운점

- 간단하게 생각하면 하나의 변수를 가지고도 문제의 조건에 맞게 결과를 구분할 수 있다.

 

2. 개선할 점

 

3. 궁금한 점

- 일부만 비교하더라도 음계를 구분할 수 있는 방법은 없을까?

import java.util.Scanner;

public class N_2920_음계 {
	
	// 음계 static 배열 생성
	static int [] noteArr = new int [] {1,2,3,4,5,6,7,8};

	public static void main(String[] args) {

		// import java.util.Scanner
		Scanner scan = new Scanner(System.in);

		// for문으로 입력받아 배열에 저장하기
		int [] compareArr = new int [8];

		for (int i = 0; i < compareArr.length; i++) {
			compareArr[i] = scan.nextInt();
		}

		// for문으로 연주 판별하기 (count)활용
		String result = null;

		int count = 0;

		for (int i = 0; i < compareArr.length; i++) {
			
			// ascending이라면 한 자릿수가 일치할 때마다 1씩 더해준다.
			if (noteArr[i] == compareArr[i]) {
				count++;
			}
			// descending이라면 한 자릿수가 일치할 때마다 1씩 빼준다.
			else if (noteArr[noteArr.length - i - 1] == compareArr[i]) 
			{
				count--;
			}

		}
		
		// 결과 출력
		if (count == 8) System.out.println("ascending");
		else if (count == -8) System.out.println("descending");
		else System.out.println("mixed");

	}
}