Skip to content

Latest commit

ย 

History

History

prg42746

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 

[programmers - ์ •๋ ฌ] ๊ฐ€์žฅ ํฐ ์ˆ˜

image

Arrays.sort - Comparator

Arrays ํด๋ž˜์Šค์˜ sortโ€‹(T[] a, Comparator<? super T> c) ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด Interface Comparator๋ฅผ ํ†ตํ•ด ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋•Œ compare ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. compare ๋ฉ”์„œ๋“œ์˜ return ๊ฐ’์ด ์Œ์ˆ˜ ๋˜๋Š” 0์ด๋ฉด ๊ฐ์ฒด์˜ ์ž๋ฆฌ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋ฉฐ, ์–‘์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋‘ ๊ฐ์ฒด์˜ ์ž๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

Arrays.sort(result, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        // code 
    }
});

๋ฌธ์ œ ํ’€์ด

String ํด๋ž˜์Šค์—์„œ๋Š” ๋ฌธ์ž์—ด ๊ฐ„ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด์ฃผ๋Š” compareTo ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. A.compareTo(B) ์ผ ๋•Œ, A - B ์ˆœ์„œ๋กœ ํ•ด๋‹น ๋ฌธ์ž์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ๋บ€ ๊ฒฐ๊ณผ๋ฅผ intํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • A < B : return ์Œ์ˆ˜
  • A == B : return 0
  • A > B : return ์–‘์ˆ˜

์ด ๋ฌธ์ œ์—์„œ๋Š” ์ˆซ์ž๋“ค์„ ๋ถ™์—ฌ ๋” ํฐ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด๋‚ด์•ผ ํ•œ๋‹ค. ์ˆซ์ž๋“ค์„ ๊ฐ๊ฐ Stringํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐ ๋ฌธ์ž์—ด๋“ค์„ ๋ถ™์˜€์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๊ณ , ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ((o2 + o1).compareTo(o1 + o2)) ์ด๋ผ๋Š” ์‹์ด ์™„์„ฑ๋œ๋‹ค.

์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Arrays.sort(result, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return ((o2 + o1).compareTo(o1 + o2));
    }
});

์ด๋Š” ๋žŒ๋‹ค์‹์œผ๋กœ ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

Arrays.sort(str, ((o1, o2) -> (o2+o1).compareTo(o1+o2)));