ํด๋น ๋ฌธ์ ๋ Level01 ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๋ ๊ฐ์ง์ ์ดํด๊ฐ ํ์ํ๋ค.
- Sort
- Comparator ํน์ Comparable
์ ๊ทผ
๋ฌธ์ ๋ ์ฃผ์ด์ง n๋ฒ์ ํด๋นํ๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๋ ฌํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง
๋ฌธ์ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ณด๋ฉด
- strings๋ ๊ธธ์ด 1 ์ด์, 50์ดํ์ธ ๋ฐฐ์ด์ ๋๋ค.
- strings์ ์์๋ ์๋ฌธ์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- strings์ ์์๋ ๊ธธ์ด 1 ์ด์, 100์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ชจ๋ strings์ ์์์ ๊ธธ์ด๋ n๋ณด๋ค ํฝ๋๋ค.
- ์ธ๋ฑ์ค 1์ ๋ฌธ์๊ฐ ๊ฐ์ ๋ฌธ์์ด์ด ์ฌ๋ฟ ์ผ ๊ฒฝ์ฐ, ์ฌ์ ์์ผ๋ก ์์ ๋ฌธ์์ด์ด ์์ชฝ์ ์์นํฉ๋๋ค.
์ด ๋ง์ง๋ง ์กฐ๊ฑด์ด ์ฐ๋ฆฌ์๊ฒ ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋ ฌํ ๊ธฐ์ค์ ์คฌ๋ค.
์ ๋ ฌ ๊ธฐ์ค
- n๋ฒ์งธ ์ธ๋ฑ์ค์ ์ฌ์ ์
- 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;
}
}
});
์ ์ด์ฉํ๋ฉด
๋๊ธ