목록PROGRAMMING (318)
MY MEMO
오류 코드#include #include #include #include using namespace std; vector cache; #define INT_MAX 2147483647 int cal(int remain, int result) { if (remain == 1) return result-1; int &ret = cache[remain]; if (ret != INT_MAX) return ret; if (remain % 3 == 0) ret = min(ret, cal(remain / 3, result + 1)); if (remain % 2 == 0) ret = min(ret, cal(remain / 2, result + 1)); ret = min(ret, cal(remain - 1, result..
#include #include #include using namespace std; int sum_sub; vectormain_cache = vector(10001, vector(10001, 0)); //cache : x => 그룹을 지을 노드의 수, y => 나눠야하는 그룹의 개수 //group_count : 나눠야하는 그룹의 개수 //pre_node_count : 그룹을 지을 노드의 수 //pre_group : 현재 나눈 그룹의 수 int main_tree(int group_count, int pre_node_count, int pre_group) { // 현재 노드가 0이고 모든 그룹을 짝지었다면 (모든 그룹을 짝지은후 한번더 DP를 돌림) 현재 그룹이 모든 그룹의 수보다 크다 // 그렇다면 1개..
정답 코드 이 문제는 최소 스패닝 트리로 푸는 문제이다.최소 스패닝 트리를 간단히 설명하자면1. 최소 거리를 순서대로 저장해 놓는다2. 만약 그 거리를 연결했을 때 사이클이 돈다면 설정하지 않는다3. 사이클이 돌지 않는다면 연결시키고 결과 값에 더해준다. #include #include #include #include #include using namespace std; #define PAIR pair vector parent; int find(int index) { if (index == parent[index]) return index; else return parent[index] = find(parent[index]); } int Union(int start, int end) { start = f..
http://book.algospot.com/estimation.html
start_end 배열은 prodo가 있는 곳부터 시작해서 종료 까지 막대 경로를 저장해 놓은 것이다end_start 배열은 ring이 있는 곳부터 시작해서 종료까지 가는 막대 경로를 저장해 놓은 것이다. 경로는 어떻게 찾냐면 한 막대에 갈수 있는 방향은 오른쪽과 왼쪽이다그렇다면 자신의 막대에 -1을 한 곳에 막대가 있다면 왼쪽으로 이동즉 자신의 막대 -1자신의 막대에 +1을 한 곳에 막대가 있다면 오른쪽으로 이동즉 자신의 막대 +1 만약 start_end의 레벨이 n이라면 end_start배열의 레벨이 n+1일때두개의 차이가 1이면 가능하다 (단 하나의 stick만 놓아서 되야 하므로) #include #include #include using namespace std; int main() { int ..
#include #include #include #include #include #include using namespace std; int result, rap_count; string rap; vector alpha; void singing(int index, int rap_result) { if (index == rap_count) { result = max(result, rap_result); return; } int count = 0; while (index + count < rap_count) { count++; string temp = rap.substr(index, count); int sub_index = index + count - 1; while (1) { sub_index = alp..
#include #include #include #include #include #include #include using namespace std; #define PAIR pair int main() { int for_count, house_count, trash_count; cin >> for_count; for (int k = 1; k > house_count >> trash_count; if (trash_count >= house_count) { cout
1.group by시 오류 this is incompatible with sql_mode=only_full_group_by으..group by만 하다가 시간을 다보냈다 8_8 해결 방법) mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUT..
1. 평균값이 들어온다 (0 최소를 만들기 위하여4. 5부터 나눈후 몫을 저장하고 나머지를 돌린다.5. 만약 값이 현재의 값 보다 작다면 현재의 값을 1빼준다6. 나누는 값이 0이 될때까지 반복한다 14.3점이 나왔다.이유는..모르겠다..ㅠㅠ #include #include #include #include #include #include #include using namespace std; double average; int result, i; vector dice; long long gcd(long long a, long long b) { if (b == 0) return a; return gcd(b, a%b); } int main() { int for_count; cin >> for_count; fo..
풀이방법은... 결국 카드가 움직이는 곳은 규칙이 있게 된다. 먼저 그 규칙을 모두 저장하고 돌리면 매우 느려지니 구하면서 저장하고 반복된다면 저장한 것으로 돌린다. board를 sorting하여 binary search를 이용하였고 시간을 줄일 수 있었다. #include #include #include #include #include #include using namespace std; #define PAIR pair vector A_card, B_card; vector A_multiple_card, B_multiple_card, board; int binary_search(int front, int rear, int result) { while (front + 1 < rear) { int mid =..