https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 이분 탐색
  • DP
  • MST
  • 백트래킹
  • 그리디
  • 유니온 파인드
  • LIS
  • BFS
  • 재귀
  • 백준
  • 재귀함수
  • 이분탐색
  • 12015
  • 최대공약수
  • 그래프
  • python3
  • Python
  • 스택
  • DFS
  • 다이나믹 프로그래밍
  • 큐
  • 최소힙
  • 유클리드호제법
  • heapq
  • 다이나믹프로그래밍
  • 최단경로
  • 파이썬
  • 다익스트라
  • counter

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

코딩테스트 알고리즘별 전략 및 요약 (수정 중...)

2021. 8. 20. 15:30
그래프
다익스트라 그리디, DP로 분류되기도 함
단일 시작점 알고리즘 (최단거리)
양수 가중치
사이클 존재
INF 사용
BFS 처럼 큐를 통해 루프
우선순위 큐 사용(가중치,end노드)
일차원 dp 사용
O(|E||log|V|)
벨만-포드 최단경로 찾기
단일 시작점 알고리즘
음수 가중치
음수 사이클 판별
INF 사용
v, mid, end 순서로 루프
V-1번의 완화 과정, 1번의 음수사이클 판별 과정 (완화가 실패할 때까지 완화함.)
일차원 dp 사용
O(VE)
플로이드 워셜 모든 쌍 최단 거리 알고리즘
음수 사이클 없으면 사용가능(음수 사이클 있으면 벨만 포드 N번하기)
메모리 초과 날 가능성 존재
INF 사용
k , i , j 순서로 루프
구현 간단 DP[i][j] = min(DP[i][k] + DP[k][j], DP[i][j])
이차원 dp 사용
O(V^3)
위상 정렬 DAG 만족해야함.(방향,비순환 그래프)
방향성을 거스르지 않고 정점 나열
indegree차수를 가지는 배열
indegree가 0인 값을 큐에 넣고 BFS
결과가 유일하지 않음
 
MST(Minimum Spanning Tree) 그래프(사이클 존재)를 트리 만들기 (가장 적은 비용으로 모든 노드를 연결)
우선순위 큐 사용
크루스칼 or 프림
크루스칼(가중치 순으로 우선순위 큐사용하여 유니온 파인드(사이클을 만들지 않기 위해) 실행)
 
LCS(Longest Common Subsequence) 최장 공통 부분수열
"ABCDEF" "GBCDFE" => "BCDF"
if A[i] == B[j]:
    dp[i][j] = dp[i-1][j-1]+1
else:
    dp[i][j] = max(dp[i][j-1], dp[i-1][j])
 
LIS(Longest Increasing Subsequence) 증가하는 가장 긴 부분 수열
dp로 모든 경우를 계산하는 경우 O(n**2)
dp에 개수별 최솟값을 넣고 bisect로 갱신하는 경우(n log n)
1. [2,5,10] 1개의 최솟값은 2, 2개인경우 최솟값5, 3개인 경우 최솟값 10
2. 만약 11일 들어오는 경우 가장 마지막 10보다 크므로 [2,5,10,11] 로 갱신
3. 만약 4가 들어오는 경우 bisect로 5의 위치가 적합, 5보다 작으므로 [2,4,10,11] 로 갱신
 
     
저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[python3] 백준 2110 풀이 ( 공유기 설치, 이분탐색 )  (0) 2021.08.24
[python3] 프로그래머스 징검다리 풀이 ( 이분탐색 )  (0) 2021.08.22
[python3] 백준 1916 풀이 ( 최소비용 구하기, 다익스트라, 그래프 )  (0) 2021.08.19
[python3] 백준 1389 풀이 ( 케빈 베이컨의 6단계 법칙, 플로이드 워샬 )  (0) 2021.08.18
[python3] 프로그래머스 입국심사 풀이 ( 이분 탐색 )  (0) 2021.08.17
    '알고리즘' 카테고리의 다른 글
    • [python3] 백준 2110 풀이 ( 공유기 설치, 이분탐색 )
    • [python3] 프로그래머스 징검다리 풀이 ( 이분탐색 )
    • [python3] 백준 1916 풀이 ( 최소비용 구하기, 다익스트라, 그래프 )
    • [python3] 백준 1389 풀이 ( 케빈 베이컨의 6단계 법칙, 플로이드 워샬 )
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바