- λ¬Έμ μ€λͺ μ μμ½νλ©΄ λ°°μ΄μ μλ μ«μλ₯Ό λ€μκ³Ό κ°μ 쑰건μ λ§μ‘±νλ setμΌλ‘ λ¬Άλ λ°©λ²μ μ°Ύλ κ²μ΄λ€.
- κ° setμ ν¬ν¨λ μ«μλ μ€λ³΅λ κ²μ΄ μμ΄μΌ νλ€.
- setμ μ«μκ° μ΅μκ° λλ μ‘°ν©μ μ°ΎμμΌ νλ€.
- λ°°μ΄μ μλ μ«μμ μΆνλΉλλ₯Ό μΈλ λ°©μμΌλ‘ ν΄κ²°ν μ μλ€.
- 쑰건μ 보면 λ°°μ΄μ ν¬ν¨λ μ«μμ λ²μλ 1 λΆν° λ°°μ΄μ κΈΈμ΄κΉμ§μ΄λ€. μ΄μ μ μ΄μ©νμ¬ λ°°μ΄ μ«μμ μΆν λΉλλ₯Ό μ
μ μλ λ©λͺ¨λ¦¬ 곡κ°
counter
μ ν λΉνλ€. - λ°°μ΄μ μλ λͺ¨λ μ«μμ μΆν λΉλλ₯Ό μΌλ€.
- λͺ¨λ μ«μλ₯Ό μ²λ¦¬ν λκΉμ§ λ€μ μμ μ λ°λ³΅νλ€.
- μλ‘μ΄ setμ ν λΉνλ€.
- κ° μ«μ
i
μ μΆν λΉλλ₯Ό νμΈνμ¬ μΆν λΉλ κ°count[i]
μ΄0
μ΄ μλλΌλ©΄ setμ λ£κ³ μΆν λΉλ κ°μ1
κ°μ μν¨λ€.
class Solution { public List<List<Integer>> findMatrix(int[] nums) { int[] counter = new int[nums.length + 1]; int allCount = 0; for (int num : nums) { ++counter[num]; ++allCount; } List<List<Integer>> result = new ArrayList<>(); while (allCount > 0) { List<Integer> subResult = new ArrayList<>(); for (int i = 0; i < counter.length; ++i) { if (counter[i] > 0) { --counter[i]; --allCount; subResult.add(i); } } result.add(subResult); } return result; } }
- λλ λ³λμ λ©λͺ¨λ¦¬ κ³΅κ° μμ΄ λ°°μ΄μ μ λ ¬ν λ€ μΆν λΉλ
count
μ λ°λΌ ν΄λΉλλ setμ λ£λ λ°©λ²λ μλ€. - λ°°μ΄μ ν¬κΈ° 쑰건
1 β€ nums.length β€ 200
μ΄ λ§€μ° μμμ μ¬μ€ λ©λͺ¨λ¦¬ κ³΅κ° λ©΄μμ λ³λ‘ μ΄μ μ μκ³ μ€ν μκ° λ©΄μμ μ½κ° λΆλ¦¬νλ€.
class Solution { public List<List<Integer>> findMatrix(int[] nums) { List<List<Integer>> result = new ArrayList<>(); int prev = -1; int count = 0; Arrays.sort(nums); for (int num : nums) { if (prev != num) count = 0; if (result.size() == count) result.add(new ArrayList<>()); result.get(count++).add(num); prev = num; } return result; } }
Β