[์ฝ”ํ…Œ๐Ÿ“‘] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํŠน์ดํ•œ ์ •๋ ฌ

์‘ค๋ฐยท2023๋…„ 4์›” 18์ผ

์ฝ”ํ…Œ๐Ÿ“‘

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๐Ÿ“„ ๋ฌธ์ œ

์ •์ˆ˜ n์„ ๊ธฐ์ค€์œผ๋กœ n๊ณผ ๊ฐ€๊นŒ์šด ์ˆ˜๋ถ€ํ„ฐ ์ •๋ ฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ n์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋” ํฐ ์ˆ˜๋ฅผ ์•ž์— ์˜ค๋„๋ก ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numlist์™€ ์ •์ˆ˜ n์ด ์ฃผ์–ด์งˆ ๋•Œ numlist์˜ ์›์†Œ๋ฅผ n์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ€๊นŒ์šด ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐Ÿšซ ์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค n โ‰ค 10,000
  • 1 โ‰ค numlist์˜ ์›์†Œ โ‰ค 10,000
  • 1 โ‰ค numlist์˜ ๊ธธ์ด โ‰ค 100
  • numlist๋Š” ์ค‘๋ณต๋œ ์›์†Œ๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐ŸŸข ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์ฝ”๋“œ

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

profile
๊ฐœ๋ฐœ์ž์ง€๋ง์ƒ

0๊ฐœ์˜ ๋Œ“๊ธ€