본문 바로가기
프로그래머스

[프로그래머스] 진료순서 정하기

by 소금_msg 2022. 12. 2.
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()차이를 몰랐는데 이번에 정확하게 알게되어서 뿌듯ㅎㅎ