Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 12018๋ฒˆ - Yonsei TOTO (C++)

moaoh 2023. 7. 4. 18:00

๋ฌธ์ œ

์—ฐ์„ธ๋Œ€ํ•™๊ต ์ˆ˜๊ฐ•์‹ ์ฒญ์ด ์–ผ๋งˆ ์ „๋ถ€ํ„ฐ ๋ฐ”๋€Œ์–ด, ๋งˆ์ผ๋ฆฌ์ง€ ์ œ๋„๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. ์ด ์ œ๋„๋Š” ๊ฐ๊ฐ์˜ ํ•™์ƒ๋“ค์—๊ฒŒ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ์ฃผ์–ด ๋“ฃ๊ณ  ์‹ถ์€ ๊ณผ๋ชฉ์— ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ๊ณผ๋ชฉ๋‹น 1~36์„ ๋ถ„๋ฐฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ ๋ถ„๋ฐฐ๊ฐ€ ๋์ด ๋‚˜๋ฉด ๊ณผ๋ชฉ์— ๋Œ€ํ•ด์„œ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ๋งŽ์ด ํˆฌ์žํ•œ ์ˆœ์œผ๋กœ ๊ทธ ๊ณผ๋ชฉ์˜ ์ˆ˜๊ฐ•์ธ์›๋งŒํผ ์‹ ์ฒญ๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์„ฑ์ค€์ด๋Š” ์—ฐ์„ธ๋Œ€ํ•™๊ต ์žฌํ•™ ์ค‘์ธ ํ•™์ƒ์ด๋‹ค. ์„ฑ์ค€์ด๋Š” ์ €๋ฒˆ ์ˆ˜๊ฐ•์‹ ์ฒญ์—์„œ ์‹คํŒจํ•˜์—ฌ ํœดํ•™์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ ์ˆ˜๊ฐ•์‹ ์ฒญ๋งŒ์€ ํ•„์‚ฌ์ ์œผ๋กœ ์„ฑ๊ณตํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์„ฑ์ค€์ด๋Š” ํ•™๊ต ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋šซ์–ด๋ฒ„๋ ธ๋‹ค.

๊ทธ ๋•๋ถ„์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‹ ์ฒญํ•œ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์„ฑ์ค€์ด๋Š” ์ฃผ์–ด์ง„ ๋งˆ์ผ๋ฆฌ์ง€๋กœ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ณผ๋ชฉ์„ ์‹ ์ฒญํ•˜๊ณ  ์‹ถ์–ด ํ•œ๋‹ค. (๋‚ด๊ฐ€ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ๋„ฃ๊ณ  ์ดํ›„์— ๊ณผ๋ชฉ์„ ์‹ ์ฒญํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†๋‹ค) ๋งˆ์ผ๋ฆฌ์ง€๋Š” ํ•œ ๊ณผ๋ชฉ์— 1์—์„œ 36๊นŒ์ง€ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ๊ณผ๋ชฉ ์ˆ˜ n (1 โ‰ค n โ‰ค 100)๊ณผ ์ฃผ์–ด์ง„ ๋งˆ์ผ๋ฆฌ์ง€ m (1 โ‰ค m โ‰ค 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๊ณผ๋ชฉ๋งˆ๋‹ค 2์ค„์˜ ์ž…๋ ฅ์ด ์ฃผ์–ด์ง€๋Š”๋ฐ ์ฒซ์งธ ์ค„์—๋Š” ๊ฐ ๊ณผ๋ชฉ์— ์‹ ์ฒญํ•œ ์‚ฌ๋žŒ ์ˆ˜ Pi๊ณผ ๊ณผ๋ชฉ์˜ ์ˆ˜๊ฐ•์ธ์› Li์ด ์ฃผ์–ด์ง€๊ณ  ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ๊ฐ ์‚ฌ๋žŒ์ด ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ์–ผ๋งˆ๋‚˜ ๋„ฃ์—ˆ๋Š”์ง€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค Pi โ‰ค100, 1 โ‰ค Li โ‰ค 100)

(๋‹จ ๋งˆ์ผ๋ฆฌ์ง€๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์„ฑ์ค€์ด์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๊ณ  ํ•˜์ž.)


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง„ ๋งˆ์ผ๋ฆฌ์ง€๋กœ ์ตœ๋Œ€๋กœ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๊ณผ๋ชฉ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

5 76
5 4 
36 25 1 36 36
4 4
30 24 25 20
6 4
36 36 36 36 36 36
2 4
3 7
5 4
27 15 26 8 14

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

4

ํ’€์ด๊ณผ์ •

๋ฌธ์ œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์€ ํฌ๊ฒŒ ์–ด๋ ต์ง€์•Š์•˜๋‹ค.

๋ฌธ์ œ๋กœ ์ฃผ์–ด์ง„ ์กฐ๊ฑด๋“ค์„ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉด ๋Œ€๋žต์ ์ธ ์ฝ”๋“œ๊ตฌํ˜„๋ฐฉ์‹์€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์„ธ๋ถ€์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋กœ์ง์„ ๊ตฌ์„ฑํ•ด์•ผ

ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋А๋ƒ๋ฅผ ์ƒ๊ฐํ–ˆ์„๋•Œ ์ˆ˜๊ฐ•์ธ์›๋“ค์˜ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ์ •๋ ฌ์‹œ์ผœ์„œ ๋‚ด๊ฐ€ ๋น„๊ต์‹œ์ผœ์•ผํ•˜๋Š” ๊ฐ’์„ ๋ฝ‘์•„์˜ค๊ณ  ๊ทธ ๊ฐ’๋“ค์„ ๋ชจ์™€ ์ •๋ ฌ์‹œํ‚จ๋‹ค์Œ ์ž‘์€๊ฐ’๋ถ€ํ„ฐ ๋งˆ์ผ๋ฆฌ์ง€๋ฅผ ์ฐจ๊ฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ•˜๋‹ˆ ํฌ๊ฒŒ ์–ด๋ ต์ง€์•Š๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

code

#include <iostream>
#include <algorithm>
#include <vector>

int		main()
{
	int n, m, p, l, temp, count;
	std::vector <int> v, v_temp;

	std::cin >> n >> m;
	for(int i = 0; i < n; i++)
	{
		std::cin >> p >> l;
		for(int j = 0; j < p; j++) {
			std::cin >> temp;
			v_temp.push_back(temp);
		}
		std::sort(v_temp.begin(), v_temp.end());
		if (l - p > 0) v.push_back(1);
		else v.push_back(v_temp[p - l]);
		v_temp.clear();
	}
	std::sort(v.begin(), v.end());
	count = 0;
	for(int i = 0; i < v.size(); i++) {
		if (m >= v[i]) {
			m = m - v[i];
			count++;
		}
	}
	std::cout << count;
	
	return (0);
}

 


ํ›„๊ธฐ

ํฐํ‹€์„ ์งœ๋Š” ๊ณผ์ •์ด ํฌ๊ฒŒ ์–ด๋ ค์šด๋กœ์ง์€ ์•„๋‹ˆ์˜€๋˜๊ฑฐ๊ฐ™์•„์„œ ๊ธˆ๋ฐฉํ’€์—ˆ์—ˆ๋‹ค.

 

 

๋Œ“๊ธ€์ˆ˜0