728x90
반응형
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제는 위에 링크에 나와있고, 문제 이해를 하는데 오래걸렸다.
문제해설
문제는 works 배열이 [4, 3, 3] 다음과 같으면 n이 4면 큰 값부터 -1을 해서 1번째 [3, 3, 3] 2번째 [3, 3, 2] 3번째 [3, 2, 2] 4번째 [2, 2, 2] 이런식으로 빼주고 배열을 제곱한 값이 2^2 + 2^2 + 2^2 = 12가 되는 문제였다. 코드는 아래와 같다 처음에 그냥 정렬로 풀었더니 효율성에서 안풀려서 우선순위큐로 해결했다.
#include <string>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
long long solution(int n, vector<int> works) {
long long answer = 0;
priority_queue<int> queue;
for (int i = 0; i < works.size(); i++)
{
queue.push(works[i]);
}
while (n--)
{
int temp = queue.top();
temp = temp - 1;
if(temp < 0)
temp = 0;
queue.pop();
queue.push(temp);
}
while (!queue.empty()) {
answer += queue.top() * queue.top();
queue.pop();
}
return answer;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ-1940] C++ 주몽 / 실버4 (0) | 2024.12.11 |
---|---|
[BOJ-1213] C++ 팰린드롬 만들기 / 실버3 (0) | 2024.12.11 |
[종만북 예제 P150] 보글 게임 전체코드 (1) | 2024.12.04 |
[PCCP 기출문제] 1번 / 동영상 재생기 (0) | 2024.11.19 |
[프로그래머스 - python] 방문길이 (0) | 2024.02.25 |