문제링크
https://softeer.ai/practice/6283
Note
두 배열의 비교하는 것이 관건이었던 문제
서로 다른 두 배열을 단순히 ==
로 비교하면 각 배열의 주소값을 불러오기 때문에 당연히 false
이다.
두 배열의 요소를 비교 하려면 .equals()
를 사용하자
Key
Arrays.equals(array1, array2)
제출한 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int[] arrInput = new int[8];
for(int i = 0 ; i < 8 ; i++){
arrInput[i] = sc.nextInt();
}
//System.out.println(Arrays.toString(arrInput));
int[] ascending = new int[8];
for(int i = 0 ; i < 8 ; i++){
ascending[i] = i+1;
}
int[] descending = new int[8];
for(int i = 0, j = 8 ; i < 8; i++, j--){
descending[i] = j;
}
//System.out.println(Arrays.toString(asending));
//System.out.println(Arrays.toString(desending));
if(Arrays.equals(arrInput, ascending)){
System.out.println("ascending");
} else if(Arrays.equals(arrInput, descending)){
System.out.println("descending");
} else {
System.out.println("mixed");
}
}
}
제출한 코드 2
ascending 과 descending을 이렇게 단순하게 선언해둬도 요소만 비교하기 때문에 정답이 된다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int[] arrInput = new int[8];
for(int i = 0 ; i < 8 ; i++){
arrInput[i] = sc.nextInt();
}
int[] ascending = new int[]{1,2,3,4,5,6,7,8};
int[] descending = new int[]{8,7,6,5,4,3,2,1};
if(Arrays.equals(arrInput, ascending)){
System.out.println("ascending");
} else if(Arrays.equals(arrInput, descending)){
System.out.println("descending");
} else {
System.out.println("mixed");
}
}
}
반응형
'코딩테스트 > Java' 카테고리의 다른 글
소프티어/자바 lv.2 연탄의 크기 - HashMap (0) | 2024.03.29 |
---|---|
소프티어/자바 lv.2 [21년 재직자 대회 예선] 전광판 - 힌트, 풀이과정 (0) | 2024.03.29 |
소프티어/자바 lv.1 주행거리 비교하기 (0) | 2024.03.28 |