- λ¬Έμμ΄μ μν κΈμλ€μ μΆν λΉλμ λ°λΌ λ΄λ¦Όμ°¨μμΌλ‘ λμ΄νλ λ¬Έμ .
- λ¬Έμμ΄μ μνλ²³ λ, μλ¬Έμ, μ«μλ‘ μ΄λ£¨μ΄μ Έμλ€.
- μλμ κ°μ΄ νμ΄νλ€.
- κ° κΈμλ€μ μΆν λΉλλ₯Ό μΈμ΄μ κΈμμ ν¨κ» λ°°μ΄
pairs
μ μ μ₯νλ€. Map<Character, Integer>
μ μ¬μ©ν μλ μκ² μ§λ§ μλμ μΌλ‘ μλκ° λ리λ€.- μνλ²³ λ, μλ¬Έμ, μ«μ κΈμμ λ²μκ°
0 ~ z
κΉμ§μμ κ°μνμ¬ λ°°μ΄μ ν¬κΈ°λ λ λ¬Έμκ°μ μ°¨μ΄ + 1λ‘ μ‘λλ€. - μ€κ°μ λΆνμν κΈμλ€μ΄ μκΈ°λ νμ§λ§ λ²μλ₯Ό 3κ°(μ«μ, μνλ²³ λλ¬Έμ, μνλ²³ μλ¬Έμ)λ‘ λλμ΄ κ°κ°μ indexμ λμμν€λ©΄ μ‘°κ±΄λ¬Έμ΄ λ€μ΄κ°λ―λ‘ μλκ° λλ €μ§λ κ² λ³΄λ€λ λ«λ€.
- μΆν λΉλμ λ°λΌ λ°°μ΄μ μ λ ¬νλ€.
- λ°°μ΄μ μννλ©΄μ κ° κΈμλ₯Ό μΆν λΉλλ§νΌ 볡μ νμ¬ κ²°κ³Όμ λνλ€.
class Solution {
final int L = 'z' - '0' + 1;
public String frequencySort(String s) {
int[][] pairs = new int[L][2];
for (char c = '0'; c <= 'z'; ++c) {
pairs[c - '0'][0] = c;
}
for (int i = 0; i < s.length(); ++i) {
++pairs[s.charAt(i) - '0'][1];
}
Arrays.sort(pairs, (a, b) -> b[1] - a[1]);
StringBuilder result = new StringBuilder();
for (int[] pair : pairs) {
result.append(String.valueOf(Character.valueOf((char)pair[0])).repeat(pair[1]));
}
return result.toString();
}
}