알고리즘
-
백준 1956번) 최단경로 - 운동알고리즘/백준 2021. 1. 29. 21:05
최단경로 찾기 문제에서 간선에 음수가 있다면 벨만 포드, 양수만 존재한다면 다익스트라, 양수중에서도 특정 구역을 거쳐서 지나간다면 플로이드 워셜 방법을 쓰도록 한다. 이 문제는 같은곳에서 출발하여 같은 곳으로 돌아온다는 것을 유의한다. #include #include #include #include #define INF 1e9 using namespace std; int n, m; int graph[401][401]; int main() { cin >> n >> m; for (int i = 0; i > a ..
-
백준 1904번) 동적계획법 1 - 01.타일알고리즘/백준 2021. 1. 29. 21:03
이코테에 있던 문제와 매우 유사한 문제. #include #include #include #include #define INF 1e9 using namespace std; int d[1000001]; int n; int main() { cin >> n; d[0] = 0; d[1] = 1; d[2] = 2; d[3] = 3; for (int i = 4; i < n + 1; i++) { d[i] = (d[i - 2] * 2 + d[i - 3]) % 15746; } cout
-
이것이 코딩테스트다 - 10) 그래프알고리즘 2021. 1. 27. 22:02
8,9,10 단원은 백준, 프로그래머스 달린다고 생각하고 복습 제대로 해야한다. 엉망진창 와진창이다. 10.1) 팀 결성 #include #include #include #include #define INF 1e9 using namespace std; int n, m; int parent[100000]; int find_parent(int parent[100000], int x) { if (parent[x] != x) { parent[x] = find_parent(parent, parent[x]); } return parent[x]; } void union_parent(int parent[100000], int a, int b) { a = find_parent(parent, a); b = find_par..
-
이것이 코딩테스트다 - 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,..