๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS(ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค)] ๋ฌธ์ž์—ด ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ Java ๋ฌธ์ œ ํ’€์ด

by Wonit 2020. 6. 28.

 

ํ•ด๋‹น ๋ฌธ์ œ๋Š” Level01 ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋‘ ๊ฐ€์ง€์˜ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  1. Sort
  2. Comparator ํ˜น์€ Comparable

์ ‘๊ทผ

๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ n๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ก๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ

๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋ณด๋ฉด

  • strings๋Š” ๊ธธ์ด 1 ์ด์ƒ, 50์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ์†Œ๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • strings์˜ ์›์†Œ๋Š” ๊ธธ์ด 1 ์ด์ƒ, 100์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  strings์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” n๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค 1์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฟ ์ผ ๊ฒฝ์šฐ, ์‚ฌ์ „์ˆœ์œผ๋กœ ์•ž์„  ๋ฌธ์ž์—ด์ด ์•ž์ชฝ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋งˆ์ง€๋ง‰ ์กฐ๊ฑด์ด ์šฐ๋ฆฌ์—๊ฒŒ ๊ตฌ์ฒด์ ์œผ๋กœ ์ •๋ ฌํ•  ๊ธฐ์ค€์„ ์คฌ๋‹ค.

์ •๋ ฌ ๊ธฐ์ค€

  1. n๋ฒˆ์งธ ์ธ๋ฑ์Šค์˜ ์‚ฌ์ „์ˆœ
  2. n๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ์ „์ฒด ๋ฌธ์ž์—ด ์‚ฌ์ „์ˆœ

์›๋ž˜ Arrays.sort๋‚˜ Collections.sort์˜ ์ •๋ ฌ ๊ธฐ์ค€์€ ๋ฌธ์ž์—ด์˜ ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ธฐ๋ณธ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ ๊ธฐ์ค€์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝ

์ •๋ ฌ ๊ธฐ์ค€์€ Comparator์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ ํ•˜๋Š” ๊ฒƒ์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ๋‹ค. ๋งŒ์•ฝ Comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋‚˜ Comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ณ€๊ฒฝํ•˜๊ธฐ์— ๋Œ€ํ•ด์„œ ๋ชจ๋ฅธ๋‹ค๋ฉด ํ•ด๋‹น ํฌ์ŠคํŒ…์—์„œ ํ™•์ธํ•˜๊ณ  ์˜ค๋Š” ๊ฒƒ๋„ ์ข‹์€ ์„ ํƒ์ด๋‹ค.

1๋ฒˆ ์ •๋ ฌ ๊ธฐ์ค€
1๋ฒˆ ์ •๋ ฌ ๊ธฐ์ค€์€ ๊ตฌ์ฒด์ ์œผ๋กœ compare ํด๋ž˜์Šค๋ฅผ ์žฌ์ •์˜ ํ•ด์„œ ๊ธฐ์ค€์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.

Arrays.sort(strings, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if(o1.charAt(n) > o2.charAt(n)){
                    return 1;
                } else {
                    return -1;
                }
            }
        });

2๋ฒˆ ์ •๋ ฌ ๊ธฐ์ค€
2๋ฒˆ ์ •๋ ฌ ๊ธฐ์ค€์€ ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ ์šฉํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Arrays.sort(strings, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if(o1.charAt(n) > o2.charAt(n)){
                    return 1;
                } else if(o1.charAt(n) == o2.charAt(n)){
                    //2๋ฒˆ ๊ธฐ์ค€
                    return o1.compareTo(o2); // ๊ธฐ๋ณธ ๋ฌธ์ž์—ด ์‚ฌ์ „์ˆœ ์ •๋ ฌ
                }
                else {
                    return -1;
                }
            }
        });

์„ ์ด์šฉํ•˜๋ฉด

 

๋Œ“๊ธ€