[백준/BOJ] 23843. 콘센트 [Gold 5]

jychan99·2022년 1월 9일
0
post-thumbnail
  1. 콘센트

문제출처 : https://www.acmicpc.net/problem/23843

이걸 어떻게 풀어야겠다고 머리속에서는 생각이 되는데, 코드로 구현을 어떻게해야하는지 구상이 안떠오른다... 큐를 이용하라고는 하는데, 아직 부족한것 같다. 큐에대해서 공부를 좀 더 하고 풀어야 겠다.


참고블로그 : https://velog.io/@y-siro/%EB%B0%B1%EC%A4%80-23843-%EC%BD%98%EC%84%BC%ED%8A%B8
code

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main()
{
	int N, M, i, time = 0, sum = 0, index = 0, temp = 0;
	cin >> N >> M;
	vector<int>charge(N);
	priority_queue<int>pq;

	for (i = 0; i < N; i++)
		cin >> charge[i], sum += charge[i];

	sort(charge.begin(), charge.end(), greater<>());

	if (M == 1)
		cout << sum;
	else if (M > N)
		cout << charge[0];
	else
	{
		index = M;
		for (i = 0; i < M; i++)
			pq.push(-charge[i]);
		while (index < N)
		{
			temp = -pq.top();
			pq.pop();
			while (temp <= -pq.top() && index < N)
				temp += charge[index], index++;
			pq.push(-temp);
		}
		for (i = 0; i < M - 1; i++)
			pq.pop();
		cout << -pq.top();
	}

	return 0;
}

골드에 들어오면서 큐를 많이 쓰는것 같다.
나름 코드 짜서 이리 저리 굴려봤는데 시간초과나고 막이래서... 구글링했다..
참고한 블로그에서 굉장히 자세히 설명해주셔서 참고해서 짰다.
한걸음한걸음 큐에대해서 익숙해지는것같다. 한 2~3문제정도 더풀면 감잡을듯??? ㅠㅠㅠㅠ

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글