<C/C++> BOJ 14501: ํ‡ด์‚ฌ

https://www.acmicpc.net/problem/14501

 

14501๋ฒˆ: ํ‡ด์‚ฌ

์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

์˜ˆ์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ ์ง€๊ธˆ ๋‹ค์‹œ๋ณด๋‹ˆ DFS๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋„ค์š”!

#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 15
int N; // N+1์ผ์— ํ‡ด์‚ฌ
int T[MAXN + 5]; // ์ƒ๋‹ด ์™„๋ฃŒํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ธฐ๊ฐ„
int P[MAXN + 5]; // ์ƒ๋‹ด ํ–ˆ์„ ๋•Œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธˆ์•ก
int C[MAXN + 5];
int sol;

void InputData(void) {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> T[i] >> P[i];
	}
}

int max(int a, int b) {
	return a > b ? a : b;
}

void Solve(void) {
	// ํ•˜๋ ค๋Š” ๋‚ ์งœ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋นจ๋ฆฌ ๋๋‚˜๋ฉด์„œ ์ˆ˜์ต์ด ๋” ๋งŽ์œผ๋ฉด ๊ทธ์ชฝ์œผ๋กœ ์˜ฎ๊น€
	for (int i = 1; i <= N; i++) {
		if (i + T[i] <= N + 1) { // ์ผํ–ˆ์„ ๋•Œ
			C[i + T[i]] = max(C[i + T[i]], C[i] + P[i]);
			sol = max(sol, C[i + T[i]]);
		}
		// ์ผ ์•ˆํ–ˆ์„ ๋•Œ
		C[i + 1] = max(C[i + 1], C[i]);
		sol = max(sol, C[i + 1]);
	}
	cout << sol << endl;
}
int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	InputData();
	Solve();
	return 0;
}

'Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

<C/C++> BOJ 15683 ๊ฐ์‹œ  (0) 2022.05.06
<C/C++> BOJ 12100 2048(Easy)  (0) 2022.05.04
<C/C++> BOJ 3190: ๋ฑ€  (0) 2022.05.02
<C/C++> BOJ 15685: ๋“œ๋ž˜๊ณค ์ปค๋ธŒ  (0) 2022.04.05
<C/C++> BOJ 15684: ์‚ฌ๋‹ค๋ฆฌ ์กฐ์ž‘  (0) 2022.04.05