반응형
https://leetcode.com/problems/minimum-number-of-operations-to-make-array-empty
각 수의 개수를 구해줍니다.
개수가 1개인 수가 있다면 빈 배열로 만들 수 없습니다.
개수가 n개라면 n / 3 + (n % 3 != 0 ? 1 : 0)이 n을 없애는 최소 연산 횟수가 됩니다.
n % 3 == 0 이라면, 3개 삭제 연산을 (n / 3)번 수행해주면 됩니다.
n % 3 == 1 이라면, 3개 삭제 연산을 (n / 3 - 1)번, 2개 삭제 연산을 2번(3개 + 나머지 1개) 수행해주면 됩니다.
n % 3 == 2 이라면, 3개 삭제 연산을 (n / 3)번, 2개 삭제 연산을 1번(나머지 2개) 수행해주면 됩니다.
class Solution {
public:
int minOperations(vector<int>& nums) {
int cnt[1000001] = {0};
for(int num : nums) cnt[num]++;
int res = 0;
for(int i=1; i<1000001; i++) {
if(cnt[i] == 1) return -1;
res += cnt[i] / 3 + (cnt[i] % 3 != 0);
}
return res;
}
};
반응형
'Algorithm' 카테고리의 다른 글
LeetCode 446. Arithmetic Slices II - Subsequence (0) | 2024.01.08 |
---|---|
LeetCode 2125. Number of Laser Beams in a Bank (0) | 2024.01.06 |
LeetCode 2610. Convert an Array Into a 2D Array With Conditions (0) | 2024.01.02 |
LeetCode 455. Assign Cookies (0) | 2024.01.01 |
LeetCode 1624. Largest Substring Between Two Equal Characters (1) | 2023.12.31 |