- λ°°μ΄μμ λμΌν μ«μλ₯Ό 2κ° λλ 3κ°μ© λ¬Άμ΄μ μ κ±°νλ μμ
μ μνν μ μμ λ λ°°μ΄μ λΉ μνλ‘ λ§λ€κΈ° μν΄ νμν μ΅μμ μμ
μλ μΌλ§μΈμ§ ꡬνλ λ¬Έμ μ΄λ€.
- κ° μ«μλ³λ‘ μΆν λΉλλ₯Ό μΈμ΄μ μ μ₯νλ λ°©λ²λ μκ² μ§λ§ λ³λμ λ©λͺ¨λ¦¬ 곡κ°μ μ¬μ©ν΄μΌ νλ€.
- λ°°μ΄μ μ λ ¬νμ¬ μ°μλ λμΌ μ«μλ₯Ό μΈλ©΄ λ³λμ λ©λͺ¨λ¦¬ κ³΅κ° μμ΄ λ¬Έμ λ₯Ό ν μ μλ€.
- μ‘°κΈ ν·κ°λ Έλ λΆλΆμ 2κ°μ© λ¬Άμ μμ
μ μ, 3κ°μ© λ¬Άμ μμ
μ μλ₯Ό μ΄λ»κ² μΈμ΄μΌ νλμ§μ λν κ²μ΄μλ€.
- κ°λ₯νλ€λ©΄ 3κ°μ© λ¬Άμ΄μ μ κ±°νλ κ²μ΄ μ΅μμ μμ
μλ₯Ό λ¬μ±νλλ° μ 리νλ€. λ°λΌμ λ¨μνκ² μκ°νλ©΄ 3κ°μ© λ¬Άμ΄μ μ κ±°ν λ€ λλ¨Έμ§ μ«μλ₯Ό 2κ°μ© μ κ±°νλ©΄ λλ€.
- νμ§λ§ 3κ°μ© λ¬Άμ΄μ μ κ±°νμ λ 2κ°κ° λ¨μ§ μλ κ²½μ°λ μ΄λ»κ² ν΄μΌ λ κΉ?
μΆνλΉλ % 3 == 2
: λλ¨Έμ§κ° 2μ΄λ―λ‘ μμ
μ μ«μλ₯Ό νλ λν΄μ£Όλ©΄ λλ€.μΆνλΉλ % 3 == 1
: λλ¨Έμ§κ° 1μ΄λ―λ‘ κΈ°μ‘΄μ 3κ°μ© λ¬Άμ΄μ ν μμ
νλλ₯Ό μ·¨μνλ€. κ·Έλ¬λ©΄ λ¨μ μ«μκ° 4μ΄λ―λ‘ 2κ°μ© λ¬Άμ΄μ 2λ² μ κ±°νλ©΄ λλ€. νμ§λ§ κ²°κ΅ λ°μ Έλ³΄λ©΄ μμ
μ μ«μλ₯Ό νλ λν΄μ£Όλ κ²κ³Ό κ°λ€.
- κ²°λ‘ μ μΌλ‘
μΆνλΉλ % 3 β 0
μ΄λΌλ©΄ μμ
μ«μλ₯Ό νλ λλ €μ£Όλ©΄ λλ€.
class Solution {
int countToOps(int count) {
if (count == 1) return -1;
int ops = count / 3;
if (count % 3 != 0) ++ops;
return ops;
}
public int minOperations(int[] nums) {
int result = 0;
int prev = 0;
int count = 0;
Arrays.sort(nums);
for (int num : nums) {
if (prev != num) {
int ops = countToOps(count);
if (ops == -1) return -1;
result += ops;
count = 0;
}
prev = num;
++count;
}
if (count > 0) {
int ops = countToOps(count);
if (ops == -1) return -1;
result += ops;
}
return result;
}
}