Skip to content

Commit

Permalink
Week 49
Browse files Browse the repository at this point in the history
  • Loading branch information
cje172 committed Apr 8, 2024
1 parent 60bf517 commit c21ee50
Show file tree
Hide file tree
Showing 3 changed files with 118 additions and 0 deletions.
29 changes: 29 additions & 0 deletions 지은/boj/14501.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <iostream>
#include <algorithm>
using namespace std;

int dp[15];
int t[15];
int p[15];

int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);

int n;
cin >> n;

for (int i = 0; i < n; i++) {
cin >> t[i] >> p[i];
}

for (int i = 0; i < n; i++) {
for (int j = i + t[i]; j <= n; j++) {
dp[j] = max(dp[j], dp[i] + p[i]);
}
}

cout << dp[n];

return 0;
}
52 changes: 52 additions & 0 deletions 지은/boj/14888.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#include <iostream>
#include <algorithm>
using namespace std;

int n;
int nums[12], operations[4];
int max_value = -1000000000, min_value = 1000000000;

void dfs(int cnt, int sum) {
if (cnt == n - 1) {
max_value = max(max_value, sum);
min_value = min(min_value, sum);
return;
}

for (int i = 0; i < 4; i++) {
if (operations[i] > 0) {
operations[i]--;

if (i == 0) {
dfs(cnt + 1, sum + nums[cnt + 1]);
}
else if (i == 1) {
dfs(cnt + 1, sum - nums[cnt + 1]);
}
else if (i == 2) {
dfs(cnt + 1, sum * nums[cnt + 1]);
}
else {
dfs(cnt + 1, sum / nums[cnt + 1]);
}

operations[i]++;
}
}
}

int main() {
cin >> n;

for (int i = 0; i < n; i++)
cin >> nums[i];

for (int i = 0; i < 4; i++)
cin >> operations[i];

dfs(0, nums[0]);

cout << max_value << '\n' << min_value;

return 0;
}
37 changes: 37 additions & 0 deletions 지은/boj/15650.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#include <iostream>
#include <vector>
using namespace std;

bool visited[9];

void dfs(int cnt, int cur, vector<int>& nums, int n, int m) {
if (cnt == m) {
for (int item : nums) {
cout << item << " ";
}
cout << '\n';
return;
}

for (int i = cur; i <= n; i++) {
if (!visited[i]) {
nums.push_back(i);
visited[i] = true;

dfs(cnt + 1, i, nums, n, m);

visited[i] = false;
nums.pop_back();
}
}
}

int main() {
int n, m;
cin >> n >> m;

vector<int> nums;
dfs(0, 1, nums, n, m);

return 0;
}

0 comments on commit c21ee50

Please sign in to comment.