728x90
풀이
- 정렬 기준을 바꿔기
n을 기준으로 가까운 수 -> 각각 숫자에서 n을 뺀 절댓값 - 절댓갑 기준(값의 차이) 내림차순 정렬 후 오름차순 정렬
- 문제에서 거리가 같은 경우 큰수가 앞으로 와야하는 조건 때문
상세 설명은 코드 주석 참고
코드
import java.util.*;
class Solution {
public int[] solution(int[] numlist, int n) {
// 정수 리스트를 저장할 어레이리스트 생성
List<Integer> numList = new ArrayList<>();
// numList 추가
for (int num : numlist) {
numList.add(num);
}
// numList 정렬
Collections.sort(numList);
// numList 정렬 기준 변경 : n과의 차이의 절대값으로 기준
// 차이가 큰 순으로 내림차순 -> 문제에서 거리가 같은 경우 큰수가 앞으로 와야하는 조건 때문
// 뒤에서 역순으로 정렬할 에정
numList.sort(Comparator.comparingInt(s -> -(Math.abs(s - n))));
// 역순으로 정렬
Collections.reverse(numList);
// 정렬된 numList 어레이리스트를 int 배열로 변환하여 반환
return numList.stream().mapToInt(i -> i).toArray();
}
}
728x90
'알고리즘 풀이' 카테고리의 다른 글
[프로그래머스] 예상 대진표 자바(Java) (0) | 2023.03.23 |
---|---|
[프로그래머스] 기사단원의 무기 자바(Java) (0) | 2023.03.21 |
[프로그래머스] 문자열 나누기 자바(Java) (0) | 2023.03.19 |
[프로그래머스] 옹알이 (2) 자바(Java) (0) | 2023.03.17 |
[프로그래머스] 당구 연습 자바(Java) (0) | 2023.03.17 |
댓글