알고리즘 연습
[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");
}
}