반응형 ps연습장14 백준 7562번 : 나이트의 이동 (C/C++) 백준 7562번 https://www.acmicpc.net/problem/7562 bfs를 이용하여 풀면 된다. 한 지점에서 다음 지점까지 가는 방법이 총 8개가 존재한다. 따라서 이는 8개의 인접 노드와 연결되어있는 그래프로 볼 수 있다. lev값을 선언해준 다음 각 층의 깊이를 저장해주고, 원하는 목표가 탐색되면 바로 lev값을 출력해주면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 #include #define fio() \ ios_base::s.. 2023. 9. 16. 백준 2294번 : 동전 2 (C/C++) 문제 : 백준 2294 https://www.acmicpc.net/problem/2294 풀이 dp로 풀면 된다. 필자는 아래와 같이 dp 점화식을 정의하였다. dp[n][k] = f(n-1, k); if(k >= cost[n]) dp[n][k] = min(dp[n][k], f(n, k-cost[n])+1); 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include #define fio() \ ios_base::sync_with_stdio(0); \ cin.tie(0) using namespace.. 2023. 9. 16. 백준 13305번 : 주유소 풀이 (C/C++) https://www.acmicpc.net/problem/13305 흔한 dp문제라고 볼 수 있다. 노드의 간선이 2개를 초과하지 않음으로 다익스트라를 사용하지 않아도 된다. 필자는 아래와 같은 점화식으로 구현하였다. 위 점화식을 그대로 구현하면 아래와 같은데 cost의 범위가 10^9이므로 메모리 초과가 난다. 1 2 3 4 5 6 7 8 9 10 int dp[101010][1010101010]; //메모리 초과가 남.. int dist[101010], cost[101010]; int f(int n, int v){ if(n == 1){ return 0; } if(dp[n][v] != -1) return dp[n][v]; return dp[n][min(v, cost[n])] = f(n-1, v) + co.. 2023. 9. 15. 백준 15649번 N과 M (1) 풀이 (C/C++) https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹을 이용하면 간단하게 해결할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #include #define fio() \ ios_base::sync_with_stdio(0.. 2023. 9. 15. 이전 1 2 3 4 다음 반응형