알고리즘
-
이것이 코딩테스트다 - 8) 다이나믹 프로그래밍(다시 풀어보기)알고리즘 2021. 1. 26. 00:31
정말 처참한 다이나믹 프로그래밍... 꼭 다시 봐야한다. 😭 8.1) 1로 만들기 #include #include #include using namespace std; int x; int dp[30001] = { 0, }; int main() { cin >> x; //dp[1]=0이므로 2부터 시작한다. (보텀업) for (int i = 2; i > k; food.push_back(k); } d[0] = food[0]; d[1] = max(food[0], food[1]); //다이나믹 프로그래밍 (보텀업) for (int i = 2; i < food.size(); i++) { d[i] = max(d[i - 1], d[i - 2] + food[i]); } cout n; d[0] = 0; d[1] = 1; ..
-
이것이 코딩테스트다 - 7) 이진탐색알고리즘 2021. 1. 24. 18:20
7.1_1) 부품 찾기 (이진탐색 이용) #include #include #include using namespace std; int n, m; vector items; vector order; int binarySearch(int Left, int Right, int number) {//이진탐색 재귀함수 이용 if (Left > Right) return 0;//끝까지 갔는데 없으면 0 리턴 int mid = (Left + Right) / 2; if (items[mid] == number) {//찾으면 1리턴 return 1; } else if (items[mid] < number) {//범위에 없다면 범위를 다시 정해서 탐색 binarySearch(mid + 1, Right, number); } els..
-
이것이 코딩테스트다 - 6) 정렬알고리즘 2021. 1. 24. 18:17
6.1) 위에서 아래로 #include #include #include using namespace std; bool compare(int a, int b) { return a > b; } int main() { int n; cin >> n; vector arr; for (int i = 0; i > m; arr.push_back(m); } sort(arr.begin(), arr.end(), compare); for (int i = 0; i score < other.s..
-
이것이 코딩테스트다 - 5) DFS/BFS알고리즘 2021. 1. 22. 19:33
DFS : (재귀용법을 이용해서) 모든 노드를 방문할 때 - (stack) BFS : 두개의 노드를 최단거리로 방문할 때 (최단거리 구하기 문제) - (가까운 노드부터 방문한다, queue) 5.1) 음료수 얼려먹기 #include #include #include #include #include #include using namespace std; int n, m; int Ice[1000][1000]; bool dfs(int x, int y) { if (x = n || y = m)//범위내 충족하는지 확인 { return false; } if (Ice[x][y] == 0)//갈수 있는 공간이라면 { Ice[x][y] = 1;//방문표시 남기고 dfs(x + 1, y);//상하좌우 방문 dfs(x - 1,..
-
이것이 코딩테스트다 - 4) 구현알고리즘 2021. 1. 21. 20:05
깃허브에 올리는게 11일만이라서 너무 민망...😂 죄책감 어쩔 것이여...😭 아예 안한건 아니고 자바기초를 다시 보고 스프링 강의를 시작해서 그런거다. (그러하다) 알고리즘도 빼지 말고 다시 달리자! 4.1) 상하좌우 #include #include #include #include #include #include using namespace std; int n; string A; int x = 1; int y = 1; int dx[4] = { 0,0,-1,1 }; int dy[4] = { -1,1,0,0 }; char movetypes[4] = { 'L', 'R', 'U', 'D' }; int main() { cin >> n; cin.ignore();//버퍼 비우기 getline(cin, A); for ..
-
이것이 코딩테스트다 - 3)그리디알고리즘 2021. 1. 6. 20:16
원래대로라면 알고리즘 문제해결 전략책 2권을 완료했어야 하지만 😭 내 기본 개념이 너무나도 부족한 관계로 조금더 설명이 자세하고 쉬운 책으로 재구매를 했는데 그게 바로 '이것이 코딩테스트다'이다. 유튜브에 강의도 올라와있고, 기본개념부터 설명해주고 문제난이도도 종만북보다는 괜찮은 것 같아서 구매했다! 빠른시일내에 끝내고 알고리즘 문제해결 전략책도 끝내보자! 아자아자! 3.1) 거스름 돈 #include using namespace std; int main() { int n, cnt = 0, money[4] = { 500, 100, 50, 10 }; cin >> n; for (int i = 0; i < 4; i++) { if (n == 0) break; cnt += n / money[i]; n %= mon..
-
알고리즘 문제 해결 전략 - 9.7) k번째 최대 증가 부분 수열알고리즘 2021. 1. 4. 11:29
알고리즘 문제 해결 전략 책의 k번째 최대 증가 부분 수열. (동적계획법_테크닉) 기존에 풀었던 LIS문제와 달리 k번째 최대 길이 수열을 출력하는 문제였다. #include #include #include #include #include #include using namespace std; const int MAX = 2000000000 + 1;//k번째보다 1개 더 큰수 int n; int cacheLen[501], cacheCnt[501], S[500]; int lis(int start) {//S[start]에서 시작하는 증가 부분 수열 중 최대 길이를 반환 int& ret = cacheLen[start + 1];//메모이제이션 if (ret != -1) return ret; ret = 1; //항..