코딩테스트/백준
boj2920 - 음계 (브론즈2)
개발자딥게
2022. 7. 16. 21:59
반응형
문제 (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 중 하나를 출력한다.
내 풀이 (https://github.com/yj0903/boj_java/blob/master/src/boj2920.java)
(1) ascending의 경우, 전체 데이터에서 data [ i-1 ] < data [ i ]를 충족해야 한다.
단 1개의 값이라도 이를 충족하지 않는 경우 ascending이라 할 수 없다.
(2) descending의 경우, 전체 데이터에서 data [ i-1 ] > data [ i ]
단 1개의 값이라도 이를 충족하지 않는 경우 descending이라 할 수 없다.
(3) mixed의 경우, (1)에도 해당 안되고 (2)에도 해당 안되는 경우를 가리킨다.
import java.util.Scanner;
public class boj2920 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] data = new int[8];
boolean ascending = true;
boolean descending = true;
for (int i = 0; i < 8; i++) {
data[i] = sc.nextInt();
}
for (int i = 1; i < 8; i++) {
if (data[i - 1] < data[i]) {
descending = false;
}
if (data[i - 1] > data[i]) {
ascending = false;
}
}
if (ascending) {
System.out.println("ascending");
} else if (descending) {
System.out.println("descending");
} else {
System.out.println("mixed");
}
}
}
반응형