본문 바로가기
반응형

알고리즘6

백준 10282번 - 해킹 (C++) 문제 해결 방법 우선순위 큐(priority_queue)에 현재 감염된 컴퓨터와 연결된 컴퓨터들을 감염시간과 함께 pair 형식으로 넣어주었다. 큐에서 이를 반복하였다. 또한, 소요 시간이 초기값이 아니라면, 이미 한번 이 컴퓨터가 해킹당했고, 우선순위 큐에서 이전에 탐색되었다는 의미는 이미 더 짧은 소요 시간으로 도달할 수 있다는 의미이기 때문에 continue해주었다. 아쉬웠던 점 없음 코드 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 59 60 61 6.. 2021. 11. 3.
백트래킹(Backtracking) 알고리즘 설명 DFS를 기반으로 생성된 알고리즘으로, 기존 DFS는 모든 경우의 수를 찾아가기 때문에 불필요한 탐색이 존재하여 이 부분이 문제가 되는 경우가 있었다. 때문에 이를 보완하기 위해서 나온 알고리즘으로, 현재 탐색을 진행하고있는 루트가 이미 실패가 예정된 루트라면 해당 루트를 종료하고 더 이상 그 루트를 통하여 탐색을 진행하지 않고 이전으로 돌아가는 것을 백트래킹이라고 칭한다. 때문에 현재 루트의 가능성을 판단하는 조건이 잘 짜여질수록 효율이 올라가게 된다. 보통 DFS를 사용하는 문제에서, 완전탐색 시 경우의 수가 너무 많아지는 문제에 대하여 조건을 걸어서 루트를 줄이는 역할을 한다. 대표적인 백트래킹 문제인 N-Queen에서의 예시 문제를 요약하자면 퀸이 서로 겹치지 않게 NxN크기의 판에 N개의 .. 2021. 7. 30.
백준 1916 - 최소비용 구하기 (C++) 문제 해결 방법 : 다익스트라 알고리즘을 사용. Astar의 전 단계 느낌의 알고리즘이라 쉽게 풀었다. 코드 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 59 60 61 62 63 64 #include #include #include #include using namespace std; #define INT_MAX 2147483647 struct Route { Route(int a, int b): destination(a), cost(b) {} int des.. 2021. 5. 7.
백준 1735번 - 분수 합 (C++) 문제 문제 풀이 두 분수를 더하고, 최소공약수를 구해주면 된다. 코드 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 #include using namespace std; int gcd(int a, int b) { int r; while (b != 0) { r = a % b; a = b; b = r; } return a; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int a, s, d, f; cin >> a >> s >> d >> f; a *= f; d *= s; a += d; s *= f; int GCD = .. 2021. 5. 5.
반응형