[프로그래머스/JAVA] Lv.0 진료순서 정하기

또치·2023년 1월 19일
0

프로그래머스 JAVA

목록 보기
7/20
post-thumbnail

진료순서 정하기

🎯 문제

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.'

<제한사항>
중복된 원소는 없습니다.
1 ≤ emergency의 길이 ≤ 10
1 ≤ emergency의 원소 ≤ 100

답안

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        List<Integer> list= new ArrayList<>();
        
        // 배열이랑 원소 똑같은 list 생성
		for(int i=0; i<emergency.length; i++) {
			list.add(emergency[i]);
		}
		
        // 진짜 역대급 이상하고 멍청한 짓을 하고 있었어
    	//  a=Arrays.stream(emergency).boxed().toArray(Integer[]::new);
		//	Arrays.sort(a, Comparator.reverseOrder());
        
        // 배열을 정렬하면 맨앞에가 제일 작은 값일테니까 그 값 순서로 list에 대입해서 index 알아내기
		Arrays.sort(emergency);
		for(int i=0; i<list.size(); i++) {
			answer[list.indexOf(emergency[i])]=list.size()-i;
		}
        return answer;
    }
}

🎲 과정

빡친다
생각의 흐름을 정리해 보자면
1. 최대 원소 값이 100이니까 각 원소에서 100뺀다음에 그 수의 차가 적은 순서대로 순서 넣어줄까?
-> 각각의 자리에 맞는 순위를 넣어줄 방법을 모르겠어서 안됨
2. 배열 내림차순으로 정렬하고, list를 배열이랑 값 똑같이 하나 더 만들어서 거기서 index값 가져오기
-> int[ ]은 sort를 역순으로 하는 Comparator.reverseOrder( )가 안된대
=> Integer[ ]로 만들어주려고 Arrays.stream(emergency).boxed().toArray(Integer[]::new);
3. 생각해보니까 굳이 내림차순으로 바꿀 필요도 없었어...그냥 오름차순으로 하고 순위 넣어줄때 i 넣어줄거 list.size()-i 이렇게만 넣어주면 되는일이었는데...
암튼 배열이랑 원소똑같은 list 하나 만들어서 순서대로 정렬한 배열의 값들이 그 list에 몇번째에 있는지 알아낸 다음 그 인덱스자리에 순위 넣어주는 식으로 했다.
그리고 syso도 이상한데 찍어가면서 값 확인하고 있어가지고 값이 이상하게 나와서 이미 결과는 맞게 도출되는 아이를 계속 보고 앉아있었어...
여러모로 쓸데없이 시간을 많이 낭비했네...

0개의 댓글