728x90
문제
다장조는 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 중 하나를 출력한다.
- 입력 예시 -
// (case 1)
1 2 3 4 5 6 7 8
// (case 2)
8 7 6 5 4 3 2 1
// (case 3)
8 1 7 2 6 3 5 4
- 출력 예시 -
// (case 1)
ascending
// (case 2)
descending
// (case 3)
mixed
정답 코드
< 내 정답 코드 >
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static final String[] ASCENDING = {"1", "2", "3", "4", "5", "6", "7", "8"};
static final String[] DESCENDING = {"8", "7", "6", "5", "4", "3", "2", "1"};
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] cMjor = bf.readLine().split(" ");
String firstScale = cMjor[0];
String result = "";
if (ASCENDING[0].equals(firstScale)) {
result = checkAscending(cMjor);
} else if (DESCENDING[0].equals(firstScale)) {
result = checkdescending(cMjor);
} else {
result = "mixed";
}
System.out.println(result);
}
public static String checkAscending(String[] cMjor) {
for (int i = 1; i < cMjor.length; i++) {
if (!cMjor[i].equals(ASCENDING[i])) {
return "mixed";
}
}
return "ascending";
}
public static String checkdescending(String[] cMjor) {
for (int i = 1; i < cMjor.length; i++) {
if (!cMjor[i].equals(DESCENDING[i])) {
return "mixed";
}
}
return "descending";
}
}
< 타인 답변 코드 >
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] inputs = new int[8];
for (int i = 0; i < inputs.length; i++) {
inputs[i] = sc.nextInt();
}
sc.close();
String output = "";
for (int i = 0; i < inputs.length - 1; i++) {
if (inputs[i] == inputs[i + 1] - 1) {
output = "ascending";
} else if (inputs[i] == inputs[i + 1] + 1) {
output = "descending";
} else {
output = "mixed";
break;
}
}
System.out.println(output);
}
}
이것을 주의하자!
- 타인 코드를 보면, 배열을 만들어서 사용자가 입력한 값을 순서대로 넣는다. 그리고 for문을 돌려 i 번째 인자와 i + 1 인자가 동일한지 아닌지 판별해서 결과를 도출한다. 신박하다.
- 나는 따로 배열을 만들어서 비교하는 식으로 구현했다.
'코딩 테스트' 카테고리의 다른 글
[백준] (9498번) 시험 성적 (2) | 2022.11.19 |
---|---|
[백준] (8958번) OX퀴즈 (0) | 2022.11.19 |
[백준] (2884번) 알람 시계 (0) | 2022.11.19 |
[백준] (2753번) 윤년 (0) | 2022.11.19 |
[백준] (2525번) 오븐 시계 (0) | 2022.11.19 |