Comparator์ Comparable
์ ๋ ฌ์ ํ๊ธฐ ์ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก โ ๋์ โก๊ธฐ์ค ๋๊ฐ์ง๊ฐ ํ์ํ๋ค. Arrays
์ Collections
ํด๋์ค์ sort()
๋ฉ์๋๋ ๋์๊ณผ ์ ๋ ฌ ๊ธฐ์ค์ ์ธ์๋ก ์ ๋ฌํ๋ฉด ๋ฐํ๊ฐ ์์ด ๋ด๋ถ์์ ์ ๋ ฌํ๋ค.
// import java.util.Arrays
Integer[] intArr = {3, 6, 2, 1, 4, 5};
Arrays.sort(intArr); // intArr = [1, 2, 3, 4, 5, 6]
์ด๋ ์ ๋ ฌ ๊ธฐ์ค ์์ด ๋์๋ง ์ ๋ฌํ ๊ฒฝ์ฐ ๊ฐ ํด๋์ค์ ๊ตฌํ๋์ด์๋ ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋๋ฐ, Arrays
์ Collections
๋ (์ซ์์ ์ํ๋ฒณ์ฒ๋ผ ์์๋ก ๋น๊ต๊ฐ ๊ฐ๋ฅํ ๊ฐ์ด๋ผ๋ฉด) ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์๋๋ก ๊ตฌํ๋์ด์๋ค.
์ฌ๊ธฐ์ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉ๋ ๊ฒ์ Comparable
์ด๋ค. ์ด ์ธํฐํ์ด์ค์ ์๋ compare()
๋ฉ์๋๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ์ ์๋๋ก ๊ตฌํ๋์ด์๋ค. Arrays
์ Collections
์ ๋ ๋ค Comparable
์ ๊ตฌํ์ฒด์ด๋ค.
๋ค์์ ํ๋ก๊ทธ๋๋จธ์ค์ [Lv. 1][๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ] ๋ฌธ์ ๋ค.
๋ฌธ์ ์ค๋ช
๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ ๋ฆฌ์คํธ `strings`์, ์ ์ `n`์ด ์ฃผ์ด์ก์ ๋, ๊ฐ ๋ฌธ์์ด์ ์ธ๋ฑ์ค n๋ฒ์งธ ๊ธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค ํฉ๋๋ค. ์๋ฅผ ๋ค์ด `strings`๊ฐ `["sun", "bed", "car"]`์ด๊ณ n์ด 1์ด๋ฉด ๊ฐ ๋จ์ด์ ์ธ๋ฑ์ค 1์ ๋ฌธ์ `"u", "e", "a"`๋ก `strings`๋ฅผ ์ ๋ ฌํฉ๋๋ค.
import java.util.*;
class Solution {
public String[] solution(String[] strings, int n) {
String[] answer = strings.clone();
Arrays.sort(answer, new Comparator<String>() {
public int compare(String str1, String str2) {
// ๊ฐ์ผ๋ฉด ๊ธฐ๋ณธ ์ ๋ ฌ
if (str1.charAt(n) == str2.charAt(n)) {
return str1.compareTo(str2);
}
// n๋ฒ์งธ ์ธ๋ฑ์ค๋ก ์ ๋ ฌ
return str1.charAt(n) - str2.charAt(n);
}
});
return answer;
}
}
Array.sort()
๋ฅผ ํธ์ถํ๋ฉด์ ๋์์ธ answer
์ ์ ๋ฌํ๊ณ , n๋ฒ์งธ ๋ฌธ์๋ก ์ ๋ ฌํ๋ ๊ธฐ์ค์ ์๋ก ์ ์ํ์ฌ ์ธ์๋ก ์ ๋ฌํ๊ธฐ ์ํด compare()
๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ๋ค. ์ด์ฐจํผ ์ธ์๋ก ์ฐ์ด๊ณ ๋ฒ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ฐธ์กฐ ๋ณ์ ์ ์ธ ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๊ฐ์ ๋ด์ฉ์ผ๋ก ๋๋ค์์ ์ ์ฉํ ์ ์๋ค.
Arrays.sort(answer2, (String str1, String str2) -> {
// ๊ฐ์ผ๋ฉด ๊ธฐ๋ณธ ์ ๋ ฌ
if (str1.charAt(n) == str2.charAt(n)) {
return str1.compareTo(str2);
}
// n๋ฒ์งธ ์ธ๋ฑ์ค๋ก ์ ๋ ฌ
return str1.charAt(n) - str2.charAt(n);
}
);
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] List๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ณํํ๊ธฐ (0) | 2024.06.12 |
---|---|
[Java] ๋ฌธ์(char)์ ๋ฌธ์์ด(String)์ ๋ค๋ฃจ๋ ํจ์ (0) | 2024.05.30 |