본문 바로가기

Algorithm

(37)
[Dijkstra] 프로그래머스 L3 '가장 먼 노드' (Python) https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 1번 노드에서 가장 멀리 떨어진 노드의 개수를 구해야 하므로 다익스트라 알고리즘을 이용 간선은 양방향이므로 그래프에 노드를 서로 추가 가장 멀리 떨어진 노드를 구해야 하므로 max() 메서드 이용 import heapq def dijkstra(start,distance,graph): q=[] heapq.heappush(q,(0,start)) distance[start]=0 while q: dist,now = heapq.heappop..
[알고리즘] 정렬 - (선택/삽입/퀵/계수/버블/병합/라이브러리) 정렬 (sorting) 이란? - 정렬 (sorting): 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것 - 정렬은 프로그램 작성시 빈번하게 필요로 함 - 다양한 알고리즘이 고안되었으며, 알고리즘 학습의 필수 > 다양한 정렬 알고리즘 이해를 통해, 동일한 문제에 대해 다양한 알고리즘이 고안될 수 있음을 이해하고, 각 알고리즘간 성능 비교를 통해, 알고리즘 성능 분석에 대해서도 이해할 수 있음 선택 정렬 다음과 같은 순서를 반복하며 정렬하는 알고리즘 1. 주어진 데이터 중, 최소값을 찾음 2. 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 3. 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함 https://visualgo.net/en/sorting 시간 복잡도 : O(N^2)..
[정렬] 난이도1, T 기업 코딩 테스트 '위에서 아래로' (Python) 하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오. 첫째 줄에 수열이 속해 있는 수의 개수 N이 주어진다. (a
[정렬] 난이도1, D 기업 프로그래밍 콘테스트 예선 '성적이 낮은 순서로 학생 출력하기' (Python) N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오. 첫 번째 줄에 학생의 수 N이 입력된다. (1
[BFS, Dijkstra] 백준 18352번 '특정 거리의 도시 찾기' (Python) https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 이 문제는 BFS 또는 다익스트라 알고리즘으로 풀 수 있다. BFS로 푸는 법은 다음에 기록할 예정이다. 한 지점에서 다른 특정 지점까지의 최단 경로를 구해야 하므로 다익스트라 알고리즘 사용 M 개수가 1,000,000 이하이므로 input() 보다 빠른 sys.stdin.readline 라이브러리 사용 비용을 구하는 것이 ..

LIST