import java.util.*;
class Solution {
// 내림차순 정렬한 배열을 리턴
public Integer[] descending(int [] arr){
Integer[] intArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);
Arrays.sort(intArr, Collections.reverseOrder());
return intArr;
}
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
Integer [] arr = descending(emergency);
int [] sortArr = Arrays.stream(arr).mapToInt(Integer::intValue).toArray();
for(int i=0; i< emergency.length; i++){
for(int j=0; j< sortArr.length; j++){
if(emergency[i]==sortArr[j]){
answer[i]= j+1;
}
}
}
return answer;
}
}
1. 우선 내림차순해서 결과값을 리턴해주는 메서드를 만든다.
2. 결과값을 정수배열로 만든다.
3. for문으로 원래배열의 값과 내림차순한 배열값을 비교하여 값이 같을때 그 인덱스값(j)를 정답배열에 넣어준다. (j는 0부터 시작하므로 정답배열에 넣을때에는 j+1 해서 넣어준다.)
내림차순 정렬을 위해 Integer클래스 배열로 박싱해준다. (내림차순 정렬은 Wrapping(Integer, Long, String..) 타입만 가능하다고 한다.)
Integer 클래스는 Class타입이다, int는 연산가능한 primative 타입.
---출처 블로그
https://happyzodiac.tistory.com/17
valueOf()와 parseInt()의 차이이다.
- Integer.valueOf(String) : Integer 클래스 반환
- Integer.parseInt(String) : int형 반환
따라서 valueOf() 메서드로는 바로 산술 연산을 하지 못한다.
쓰면서도 valueOf()와 parseInt()차이를 몰랐는데 이번에 정확하게 알게되어서 뿌듯ㅎㅎ
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.12.02 |
---|---|
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2022.12.02 |
[프로그래머스] 합성수 찾기 (0) | 2022.12.02 |
[프로그래머스] 콜라츠 추측 (0) | 2022.12.01 |
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.12.01 |