오늘이라도

[6일차][프로그래머스, 120835번, Lv. 0] 진료순서 정하기 본문

개발 공부/코딩테스트

[6일차][프로그래머스, 120835번, Lv. 0] 진료순서 정하기

upcake_ 2022. 12. 22. 15:02
반응형

문제

내 풀이

import java.util.Arrays;
import java.util.Collections;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] emergency) {
        int[] order = IntStream.of(emergency)
            .boxed()
            .sorted(Collections.reverseOrder())
            .mapToInt(value -> value.intValue())
            .toArray();
        
        int[] answer = new int[emergency.length];
        
        for(int i = 0; i < order.length; i++) {
            for(int j = 0; j < emergency.length; j++) {
               if(order[i] == emergency[j]) {
                   answer[j] = i+1;
               }
                   
            }
        }
        
        return answer;
    }
}

채점 결과

피드백

stream만 사용하여 풀어보고 싶었는데 익숙치않아서 정렬까지밖에 stream으로 구현을 못했다

 

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();
    }
}

다른 사람의 풀이를 보니 list의 indexof라는 메서드를 활용하여 stream만 사용하여 풀었다

 

1. 배열을 스트림으로

2. map으로 맵핑시작

3. i 값을 주어진 배열을 역순으로 정렬한 list의 인덱스와 비교

4. +1하여 배열로 전환

반응형