Algorithm/구현
프로그래머스 귤고르기 c++ // 공간복잡도 공식, 구현
Mini_96
2024. 3. 28. 18:56
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 공간복잡도 공식
512MB == int배열[1억] 임을 기억하자.
2. 의사코드
1. arr을 정렬함 //a[i] : i의 등장횟수
ex) arr : 2 2 2 1 1
k=6, O O O
2. k와 arr[i]를 -하면서 k가 0이될때까지 뺴면됨.
3. arr[i]가 0이될때마다 ret++
4. k가 0이되면 종료 and 마지막 0이된숫자를 세주기위해 ret+1
3. 전체코드
#include <bits/stdc++.h>
using namespace std;
int a[10000000+1]; //a[1] : 1의 등장횟수
int ret;
int solution(int k, vector<int> tangerine) {
int answer = 0;
for(auto i : tangerine){
a[i]++;
}
sort(a,a+10000000+1,greater<int>());
int i=0;
while(true){
if(k==0) break;
if(a[i]==0) {
i++;
ret++;
continue;
}
a[i]--;
k--;
}
return ret+1; //마지막 0반영
}