[프로그래머스] Level0. 특이한 정렬

Benjamin·2023년 2월 22일
0

프로그래머스

목록 보기
26/58


특정 메서드를 사용하기위해서 주어진 배열을 리스트로 변환해야하는데, 이 부분을 stream을 이용해 한 줄로 진행하려하면 매번 그랬듯이 뭔가 막혔다.

그래서 반복문을 사용해 값을 그대로 대입해주고 난 후 진행했는데 특정 테스트케이스에서 틀렸다. 이유를 모르겠어서 다른 풀이를 보고 공부한다.

다른 풀이

import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

class Solution {
    public Integer[] solution(int[] numlist, int n) {
        List<Integer> solution = IntStream.of(numlist).boxed().collect(Collectors.toList());
        solution.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                int o1Abs = Math.abs(o1 - n);
                int o2Abs = Math.abs(o2 - n);
                if (o1Abs == o2Abs) {
                    if (o1 > o2) return -1;
                    else if (o1 < o2) return 1;
                } else {
                    return o1Abs - o2Abs;
                }

                return 0;
            }
        });
        return solution.toArray(new Integer[0]);
    }
}

헤맨 부분

초반에

String[] arr = { "A", "B", "C" };
 
// 배열 -> List로 변환
List<String> list = Stream.of(arr).collect(Collectors.toList())

위 코드를 참고해서 '배열 -> 리스트' 변환을 시도했는데 틀렸었다.

0개의 댓글