์ ์ n์ ๊ธฐ์ค์ผ๋ก n๊ณผ ๊ฐ๊น์ด ์๋ถํฐ ์ ๋ ฌํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ n์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด ๋ ํฐ ์๋ฅผ ์์ ์ค๋๋ก ๋ฐฐ์นํฉ๋๋ค. ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numlist์ ์ ์ n์ด ์ฃผ์ด์ง ๋ numlist์ ์์๋ฅผ n์ผ๋ก๋ถํฐ ๊ฐ๊น์ด ์์๋๋ก ์ ๋ ฌํ ๋ฐฐ์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
import java.util.*;
class Solution {
public int[] solution(int[] numlist, int n) {
return Arrays.stream(numlist)
.boxed()
.sorted((x, y)
-> Math.abs(x-n)==Math.abs(y-n)? //n๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ
x>y?-1:1 //ํฐ์ชฝ์ด ๋จผ์ ์ค๊ฒ
:Math.abs(x-n)>Math.abs(y-n)?1:-1)
//n๊ณผ์ ๊ฑฐ๋ฆฌ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ n๊ณผ์ ๊ฑฐ๋ฆฌ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
.mapToInt(Integer::valueOf)
.toArray();
}
}
์ด ๋ฌธ์ ๋ ํผ ์ง ๊ฝค ์ค๋๋๋๋ฐ sorted์ ๋น๊ต์ ๋ถ๋ถ์ ํํ ์ฐ๋ Comparator์ ์ฌ์ฉํ์ง ์๊ณ ์ฌ์ฉํ๋ ์์ ์๋ค. ์ฒ์ ์ ์ถํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
class Solution {
public int[] solution(int[] numlist, int n) {
List<Integer> numberlist = Arrays.stream(numlist)
.boxed()
.collect(Collectors.toList());
return numberlist.stream()
.sorted((x, y) -> {
if(Math.abs(x-n)==Math.abs(y-n)) {
return x>y?-1:1;
} else {
return Math.abs(x-n)>Math.abs(y-n)?1:-1;
}
})
.mapToInt(Integer::valueOf)
.toArray();
}
}
์ฒ์์๋ ๋น๊ต์ ๋ถ๋ถ์ if/else๋ก ์ฒ๋ฆฌํ์๋๋ฐ ์ผํญ ์ฐ์ฐ์๋ก ๋ฐ๊พธ๋ฉด ์ข ๋ ๊ฐ๊ฒฐํด์ง ๊ฒ ๊ฐ์ ์์ ํ๋ค. ๋, ๋ฆฌ์คํธ๋ ์ด์ฐจํผ ๋ ์คํธ๋ฆผ์ ์จ์ ์ ๋ ฌํ ๋ค์ ๋ฐฐ์ด๋ก ๋ณํํด์ ๋ฆฌํด ํ ๊ฑด๋ฐ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ ํ์๊ฐ ์์ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๋ ๋ถ๋ถ์ ์์ ๊ณ ์ ์ธ ๋ถ์์ ์คํธ๋ฆผ์ ์ฐ๋ ๋ถ๋ถ๊ณผ ๋ฆฌํด๋ฌธ์์ ์คํธ๋ฆผ์ ์ฐ๋ ๋ถ๋ถ์ด๋ ํฉ์น ๋ค์ ๋ฆฌํดํ๋ ๋ฐฉํฅ์ผ๋ก ์์ ํ๋ค. ์คํธ๋ฆผ์ ์์ ์์ฌ๋ก ์ฐ๊ณ ์ถ๋ค..
https://www.baeldung.com/java-8-sort-lambda
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต, https://school.programmers.co.kr/learn/challenges