Coding Test/백준
백준 2920. 음계
so.so
2021. 3. 11. 11:34
공유 소스 보기
www.acmicpc.net
문제
다장조는 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 중 하나를 출력한다.
내가 작성한 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = new int[8];
//통합
String r = " ";
//각각 배열
int[] a = new int[8];
for(int i = 0; i < a.length; i++){
a[i] = i + 1;
}
int[] d = new int[8];
for(int i = 0; i < d.length; i++){
d[i] = 8 - (i);
}
for(int i = 0; i < arr.length; i++){
arr[i] = sc.nextInt();
}
///////////////////////////////
//조건
if(arr[0] == 1){
for(int i = 0; i < arr.length; i++){
if(arr[i] == a[i]){
r = "ascending";
}else{
r = "mixed";
break;
}
}
}else if(arr[0] == 8){
for(int i = 0; i < arr.length; i++){
if(arr[i] == d[i]){
r = "descending";
}else{
r = "mixed";
break;
}
}
}else{
r = "mixed";
}
System.out.println(r);
}
}
비교
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String r = " ";
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
int e = sc.nextInt();
int f = sc.nextInt();
int g = sc.nextInt();
int h = sc.nextInt();
if(a == 1 && b == 2 && c == 3 && d == 4 &&
e == 5 && f == 6 && g == 7 && h == 8){
r = "ascending";
}else if(a == 8 && b == 7 && c == 6 && d == 5 &&
e == 4 && f == 3 && g == 2 && h == 1){
r = "descending";
}else{
r = "mixed";
}
System.out.print(r);
}
}
왜그렇게 복잡하게 생각했을까 싶다.