목록IT/Algorithm (12)
Endless Motivation
#include #include #include #include #include #include using namespace std; int days; int work[100]; int pay[100]; int max = 0; int f(int d, int sum) { if (d > days + 1) { return 0; } else if (d == days +1 ) { return sum; } return std::max(f(d + 1, sum), f(d + work[d], sum + pay[d])); } int main() { ifstream in("in.txt"); in >> days; for (int t = 1; t > work[t] >> pay[t]; } cout
#include #include #include #include #include #include using namespace std; vector v; int m[200]; int func(int cur, int dest, int path, int layer, int destLayer) { if (cur >= m[destLayer] && cur < m[destLayer] + destLayer) { return path + abs(cur - dest); } return min(func(cur + layer, dest, path + 1, layer + 1, destLayer) , func(cur + layer + 1, dest, path + 1, layer + 1, destLayer)); } int main..
ㄹ #include #include #include #include #include #include using namespace std; map m; void areaTraversal(string arr[], int map[][100], int x, int y, int k) { if (x arr[0].length() || y > arr[0].length()) { return; } if (arr[x][y] == '1' && map[x][y] == 0) { m[k] = (m.find(k) != m.end() ? m[k] + 1 : 1); map[x][y] = k; areaTraversal(arr, map, x + 1, y, k); areaTraversal(arr, map,..
string s; map m1; map m2; int res = 0; cin >> s; if (s.length() % 2 != 0) { res = -1; } else { string s1 = s.substr(0, s.length() / 2); string s2 = s.substr(s.length() / 2, s.length() / 2); for (int i = 0; i < s1.length(); i++) { m1[s1[i]] = (m1.find(s1[i]) == m1.end() ? 1 : m1[s1[i]] + 1); m2[s2[i]] = (m2.find(s2[i]) == m2.end() ? 1 : m2[s2[i]] + 1); } for (auto e : m2) { if (m1.find(e.first) =..
#include #include #include #include using namespace std; int arr[46] = { 0, }; int fibo(int n) { if (n == 1 || n == 2) { arr[n] = 1; return 1; } else if (arr[n] != 0) { return arr[n]; } else { arr[n] = fibo(n - 1) + fibo(n - 2); return arr[n]; } } int main(){ int n; cin >> n; cout
vector threeSum(vector& nums) { set t; vector res = {}; sort(nums.begin(), nums.end()); if(nums.size() < 3){ return res; } for (int i = 0; i < nums.size() - 2; i++) { if (i != 0 && nums[i] == nums[i - 1]) continue; int left = i + 1, right = nums.size() - 1; while (left != right) { if (nums[i] + nums[left] + nums[right] == 0) { vector v = { nums[i], nums[left], nums[right] }; t.insert(v); left++;..