안녕하십니까. Eun🦆입니다.
풀이법 입니다.
[효율성 미통과 코드]
#include <string>
#include <vector>
#include <algorithm>
#include <math.h>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
for(int idx=0;idx<n;idx++)
{
sort(works.begin(),works.end(),greater<int>());
works[0]--;
}
for(int idx=0;idx<works.size();idx++)
{
if(works[idx]>0)
answer += pow(works[idx],2);
}
return answer;
}
-> 역시 n번 정렬은 안되나 싶다.
#include <string>
#include <vector>
#include <queue>
#include <math.h>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int> work; // top 및 top 원소 삭제 위해 priority_queue 사용
for(int idx=0;idx<works.size();idx++)
work.push(works[idx]);
for(int idx=0;idx<n;idx++)
{
int tmp = work.top(); // 일반 큐는 top를 사용할 수 없다.
work.pop(); // 우선순위 큐는 top 값을 내보낸다
tmp--;
work.push(tmp);
}
for(int idx=0;idx<works.size();idx++)
{
if(work.top()>0)
answer += pow(work.top(),2);
work.pop();
}
return answer;
}
'개발 > Coding Test' 카테고리의 다른 글
[LeetCode 7] Reverse Integer (0) | 2022.06.07 |
---|---|
[LeetCode 1] Two Sum (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 멀리 뛰기 (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 가장 긴 팰린드롬 (0) | 2022.06.07 |
[프로그래머스 Lv3 C++] 이중우선큐 (0) | 2022.06.07 |
댓글