📝 문제
🔑 풀이 과정
이 문제는 경우의 수가 3가지 밖에 없다
1. 1 2 ... 7 8 → ascending
2. 8 7 ... 2 1 → descending
3. 그 외 → mixed
또한 1, 2 번 같은 경우는 각 경우마다 케이스가 딱 1개만 존재.
그래서 각 케이스와 같은 배열을 만들고, Arrays.equals() 를 사용하여 배열을 비교했다.
* Arrays.equals(): 배열의 주소값이 아닌, 요소의 값을 비교
다른 분들은 대부분 for문 돌리면서 앞의 요소와 뒤의 요소를 비교하면서 증가, 감소, 그 외를 판별하셨다.
그 풀이도 첨부.
🔓 답안
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[8];
for(int i = 0; i < 8; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int[] asc = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
int[] desc = new int[]{8, 7, 6, 5, 4, 3, 2, 1};
if(Arrays.equals(arr, asc)){
bw.write("ascending\n");
} else if(Arrays.equals(arr, desc)){
bw.write("descending\n");
} else{
bw.write("mixed\n");
}
bw.flush();
bw.close();
}
}
- Arrays.equals()로 비교한 풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[8];
for(int i = 0; i < 8; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
String str = "";
for(int i = 0; i < 7; i++){
if(arr[i] == (arr[i+1]-1)){
str = "ascending";
} else if(arr[i] == (arr[i+1]+1)){
str = "descending";
} else{
str = "mixed";
break;
}
}
bw.write(str + "\n");
bw.flush();
bw.close();
}
}
- for문을 돌려가면서 증가, 감소하는지 검사한 풀이
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 11382 - 꼬마 정민 (0) | 2022.12.15 |
---|---|
[Baekjoon] 8958 - OX퀴즈 (1) | 2022.12.14 |
[Baekjoon] 2675 - 문자열 반복 (1) | 2022.12.12 |
[Baekjoon] 10818 - 최소, 최대 (0) | 2022.12.11 |
[Baekjoon] 2562 - 최댓값 (0) | 2022.12.10 |
댓글