[๋ฐฑ์ค€๐Ÿ”‰][14501] ํ‡ด์‚ฌ ๋ฌธ์ œ ํ•ด์„ค

Park Ji Youngยท2021๋…„ 1์›” 13์ผ
0

algorithms

๋ชฉ๋ก ๋ณด๊ธฐ
11/26


๐Ÿ‘“ ๋ฌธ์ œ ์š”์•ฝ

์šฐ๋ฆฌํŒ€์—์„œ ๊ฐ€์žฅ ์—ด์‹ฌํžˆ, ๋ˆ์„ ์œ„ํ•ด ์ง์žฅ์„ ๋‹ค๋‹ˆ๋˜ ํ›Œ๋ฅญํ•œ ๋ฐฑ์ค€ ์ง์›์ด ํ‡ด์‚ฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
ํ‡ด์‚ฌํ•˜๊ธฐ ์ „๊นŒ์ง€ ๊ฐ€์žฅ ๋งŽ์€ ๋ˆ์„ ๋ฒ„๋Š” (๊ฐ€์žฅ ๋งŽ์€ ์ผ์„ ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ) ๊ณ„ํš์„ ์งœ๊ณ  ์ˆ˜ํ–‰ํ•˜๋ ค ํ•œ๋‹ค.
๋ฐฑ์ค€์ด๊ฐ€ ๋ˆ์„ ๋งŽ์ด ๋ฒŒ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ์ž.

์ž์„ธํ•œ ๋ฌธ์ œ ์„ค๋ช…๊ณผ ์ œํ•œ ์‚ฌํ•ญ์€ ๋ฐฑ์ค€ ํ™ˆํŽ˜์ด์ง€ ์ฐธ๊ณ . ๋ฌธ์ œํ’€๋Ÿฌ๊ฐ€๊ธฐ

๐Ÿ”‘ ๋ฌธ์ œ ํ’€์ด

์šฐ๋ฆฌ ๋ฐฑ์ค€์ด๋Š” N + 1 ์ผ์— ํ‡ด์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— N ์ผ ๊นŒ์ง€๋Š” ์ผ์„ ํ•œ๋‹ค.
์ƒ๋‹ด์™„๋ฃŒ์— ๊ฑธ๋ฆฌ๋Š” ์ผ์ž๊ฐ€ 3์ผ์ด๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋‚ ์„ ํฌํ•จํ•ด 3์ผ ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜์ž.

์ „ํ˜•์ ์ธ DFS ๋ฌธ์ œ์ด๋ฉฐ ์‹œ์ž‘ํ•˜๋Š” ์ผ๋ถ€ํ„ฐ N ์ผ๊นŒ์ง€ ํƒ์ƒ‰ ํ›„, ์–ผ๋งˆ๋ฅผ ๋ฒŒ์—ˆ๋Š”์ง€ ๊ฐ€๋Šฅํ•œ ์ผ€์ด์Šค๋ฅผ ๋ชจ๋‘ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿฅฝ ์†Œ์Šค์ฝ”๋“œ ๋ฐ ์†Œ์Šคํ•ด์„

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ๊ฐ€ ์•„๋‹Œ, visual studio ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ฝ”๋“œ์—๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

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

struct Task {
	int period;
	int earn;
};
using namespace std;
void dfs(int idx, int endDay, int money);

vector<Task> myTask;
int myMoney = -1;
int main() {

	int TC;
	cin >> TC;
	myTask.assign(TC, {0, 0});
	for (int i = 0; i < TC; i++)
		cin >> myTask[i].period >> myTask[i].earn;

	for (int i = 0; i < myTask.size(); i++)
		if (myTask[i].period + i <= myTask.size())
			dfs(i + 1, i + myTask[i].period, myTask[i].earn);
	cout << myMoney;
}
//
void dfs(int idx,int endDay,int money) {
	for (int i = idx; i < myTask.size(); i++)
		if(endDay <= i && myTask[i].period + i <= myTask.size())
			dfs(i + 1, i + myTask[i].period, money + myTask[i].earn);
	myMoney = max(myMoney, money);
}

๐Ÿ”จ ๋ฌธ์ œ ํ›„๊ธฐ

DFS์˜ ์ „ํ˜•์ ์ธ ๋ฌธ์ œ๋กœ์„œ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.
๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ฝ์–ด์„œ 1์‹œ๊ฐ„๋™์•ˆ ์ด์ƒํ•œ ์ง“์„ ํ–ˆ๋‹ค.

ํ‡ด์‚ฌ๋ฅผ ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์—ด์‹ฌํžˆ ์ผํ•˜๋Š” ๋ฐฑ์ค€์ด.
๋ฐฑ์ค€์ด ์ƒ์‚ฌ๋Š” ํ›Œ๋ฅญํ•œ ๋ถ€ํ•˜๊ฐ€ ๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์‹ฌ๊ธฐ๊ฐ€ ๋ถˆํŽธํ•  ๊ฒƒ ๊ฐ™๋‹ค.

profile
I am two cat's father

0๊ฐœ์˜ ๋Œ“๊ธ€