본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 진료순서 정하기 / Arrays.stream(), boxed(), collect(Collectors.toList()), indexOf()

 

Level. 0

 

문제

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

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

 

풀이

import java.util.Arrays;
class Solution {
    public int[] solution(int[] emergency) {
        int size = emergency.length;
        int[] answer = new int[size];
        int[] rank = emergency.clone();
        
        Arrays.sort(rank);
        for(int i=size-1; i>=0; i--){
            for(int j = 0; j<size; j++){
                if(rank[i] == emergency[j]) {
                    answer[j] = size-i;
                    break;
                }
            }
        }
        
        return answer;
    }
}

 


다른 풀이

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] e) {
        return Arrays.stream(e)
                .map(i -> Arrays.stream(e)
                           .boxed()
                           .sorted(Comparator.reverseOrder())
                           .collect(Collectors.toList())
                           .indexOf(i) + 1
                 ).toArray();
    }
}

 

ArrayList의 indexOf 메서드를 사용하여 해당 데이터의 순서를 구할 수 있었다. 


https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr