[백준/BOJ] 23254. 나는 기말고사형 인간이야 [Gold 5]

jychan99·2022년 2월 25일
0
post-thumbnail
  1. 나는 기말고사형 인간이야

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

code

#include <iostream>
#include <queue>
#define MAX 200000
using namespace std;

int a[MAX];
priority_queue<pair<int, int>>pq;
int main()
{
	ios::sync_with_stdio(false);

	int x,i, N, M, time, answer = 0;
	cin >> N >> M;
	time = N * 24;

	for (i = 0; i < M; i++)
	{
		cin >> a[i];
		answer += a[i];
	}
	for (i = 0; i < M; i++)
	{
		cin >> x;
		pq.push({ x, 100 - a[i] });
	}

	while (!pq.empty() && time > 0)
	{
		int score_per_hour = pq.top().first;
		int rest_score = pq.top().second;
		pq.pop();
		if (rest_score >= score_per_hour)
		{
			answer += score_per_hour;
			pq.push({ score_per_hour, rest_score - score_per_hour });
			time--;
		}
		else
			pq.push({ rest_score, rest_score });
	}

	cout << answer;

	return 0;
}

오늘 하루종일 고민했는데 결국 못풀었다 ㅠㅠ
구글링해서 풀어놓은 블로그를 참고해서 풀었다.

참고블로그출처 : https://kukekyakya.tistory.com/512

큐 자료구조는 이제 어느정도 알겠는데, 구현을 아직 못하겠다..
어떻게 써먹으면 좋을지, 어떤 상황에서 쓰는지,
언제 pop하는지 언제 push하는지 감이안온다.

문제도 많이 풀어보면 언젠가는 능수능란하게 다룰수 있지 않을까? ㅠㅠ

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

0개의 댓글