시간복잡도 2

Daijkstra 다익스트라: 과정 이해하고 적용해보기

알아보기 다익스트라 알고리즘은 가중치 그래프에서 가중치의 값이 모두 양수일 때 한 노드에서 각 노드까지의 최소거리를 구할때 사용한다. 기본적으로 그리디과 다이나믹을 사용한다. 방문한 노드들을 체크하여, 체크하지 않은 노드들 중 가장 비용이 적은 노드를 선택(그리디)하고, 그 비용과 기존의 비용을 비교하여 값을 갱신(프로그래밍)하는 방식이다. 적용해보기 위의 그래프를 이용하여 1번 노드에서 각 노드까지의 최소비용 구해보도록 하자. 각 노드로 가는 최소 비용을 담는 배열 dis을 생성한다. 그 값들은 최대값으로 일단 해놓고, 1번정점을 0으로 한 뒤 시작한다. 배열 값 중 0의 값이 최소이므로 체크해 놓고, 1번노드에서 바로 갈 수 있는 노드에 대한 비용을 각 노드가 가진 현재 값과 비교하여 더 작다면 바꾼..

자료구조와 알고리즘의 정의와 관계

들어가며 코딩테스트를 잘 보기 위해서는 자료구조와 알고리즘을 공부해야한다고는 하는데 이 둘이 정확히 뭔지 둘 사이의 관계는 무엇인지 코테는 왜 이러한 지식을 요구하는지 이번에 정리하고자 한다. 둘 사이의 관계가 너무 헷갈렸다.. 자료구조 단어 그대로 자료를 담는 구조를 말한다. 그 구조는 논리적인 규칙으로 정해는 것이다. 예를 들어보자! 책장에 책을 꽂아두는 상황에서, 아무렇게나 꽂으면 원하는 책을 찾기 어렵다. 규칙1. 가나다 순으로 꽂아넣기 규칙2. 분야별로 꽂아넣기 등등 규칙을 정해서 꽂아넣으면 찾기 쉬울것이다. 하지만 여기서도 문제가 생길 수 있다. 규칙2로 정해진 책장 구조에서 분야별로 동일한 공간을 마련했지만 소설책은 거의 없어 공간이 널널하고, 만화책은 너무 많아 공간이 비좁다면, 공간을 비..

코딩테스트 2023.11.03