본문 바로가기

환영합니다. 이 블로그 번째 방문자입니다.

Python/[Algorithm] 알고리즘

  (9)

Dynamic Programming (DP) - Memoization DP의 핵심 Memoization : 메모이제이션 (top, down) Tabulation : 타뷰레이션(bottom up) Alvin's Memoization Recipe 1. Make it work visualize the problem as a tree implement the tree using recursion test 2. Make it efficient add a memo object (set,arr,..) add a base case to return memo values store return values into the memo 피보나치 ❌ DP def fibonacci(n): if n
[백준] 다시 풀어봐야 할 문제 모음 1. https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 2. https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 3. h..
[Q3:English] Kth largest element Given an array of integers arr and an integer k find the kth largest element. (1 ≤ k ≤ length of arr) For example, arr = [4,2,9,7,5,6,7,1,3], k = 4, output : 6. [ Method 1] # Logic Remove max element in the arr for k-1 times and return max element. # Code # Complexity T(n,k) : (k-1) * 2n + n = O(kn) S(n) : O(1) [Method 2] # Logic Use sorting # Code # Complexity T(n,k) : O(nlogn) + O(1) = O(nlogn..
[Q2:English] First and last index in sorted array 👇🏻 문제(이 정도는 해석X...귀찮,, 영어강의라 포스트도 영어로) Given a sorted array of integers arr and an integer target, find the index of the first and last position of target in arr. In targer can't be found in arr, return [-1,-1]. For example, arr = [2,4,5,5,5,5,5,7,9,9], target = 5 👉🏻 output : [2, 6] [Method 1] # Logic # Code # Complexity S(n) = O(1) T(n) = O(n) [Method 2] How about using binary search? Because i..
[Q1:Korean] Anagram, 철자 확인 👇🏻 문제 문자열 s1, s2가 주어졌을 때, 그들이 anagram인지 확인해라. 두 문자열이 같은 빈도의 같은 문자로 이루어졌다면 anagrams가 맞다. 예시 ) s1 = "danger" , s2 = "graden" 은 anagram이다. [ 방법 1 ] 기본 로직 freq1 = s1의 문자들의 빈도수 freq2 = s2의 문자들의 빈도수 freq1 == freq2 👉🏻 s1과 s2는 anagram 이 로직을 수행하기 위해서는 a~z까지의 알파벳 테이블에 문자가 얼마나 들어갔는지 cnt를 계산해서 비교할 수 있다. 하지만, Hash Table 을 쓰면 되는데 용량 낭비까지 할 필요는 전혀 없다. s1 = "nameless" , s2 = "salesman" freq1 == freq2 => s1과 s2는..
Binary Search, 이진 탐색 이진탐색은 정렬된 배열 안에서 타깃 값의 인덱스를 찾는 탐색 알고리즘이다. 이진탐색은 배열의 중간 인덱스의 값을 타깃 값과 비교해 타깃 값의 인덱스를 찾는다. 1. 문제 상황 문제 상황을 가정해 보자. 우리는 숫자 X가 위의 배열에 존재하는지 살펴볼 것이다. ⓵ X = 21 , 3번 인덱스에 존재 ⓶ X = 25 , 존재하지 않음 ⓷ X = 81 , 7번 인덱스에 존재 위의 상황을 해결하는 가장 간단한 방법은 배열을 전부 스캔해 X 값을 찾는 것이다. 0번 인덱스로부터 시작해, 타깃 값을 찾으면 인덱스 반환 및 종료를 하면 된다. 다만, 존재하지 않는 것을 알기 위해서는 8번 인덱스까지 스캔해야만 한다. 이 탐색 법은 최악의 경우, 배열의 사이즈만큼의 시간 복잡도가 필요하다. 다행히도, 이 상황을 선형 ..
DFS & BFS (3) : 노드 탐색 👇🏻 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.28 - [Python/[Algorithm] 알고리즘] - DFS & BFS (2) : 경로 탐색 DFS & BFS (2) : 경로 탐색 🔹 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.26 - [Python/[Algorithm] 알고리즘] - DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1).. sennieworld.tistory.com { 무방향 그래프 사이클 개수 찾기 } 위의 그래프에 연결되어 있는 노드의 집합은 {1,2}, {4,5,6,7,8}, {3} 으..
DFS & BFS (2) : 경로 탐색 🔹 출처 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU 2022.04.26 - [Python/[Algorithm] 알고리즘] - DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) DFS & BFS, 깊이 우선 탐색과 넓이 우선 탐색 (1) 출처 : 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU DFS와 BFS는 그래프 자료 구조를 이용한다. 더보기 2022.04.24 - [Python/[Data Structure] 자료구조] - [11] Graph, 그래프 [11] Graph, 그래프 어쨌.. sennieworld.tistory.com { 경로 찾기 } 출발 노드에서 도착 노드까지 경로가 있는지 탐색 : 있으면 tr..
DFS & BFS (1) : 그래프 순회 출처 : 더보기 https://www.youtube.com/watch?v=tWVWeAqZ0WU DFS와 BFS는 그래프 자료 구조를 이용한다. 더보기 2022.04.24 - [Python/[Data Structure] 자료구조] - [11] Graph, 그래프 [11] Graph, 그래프 어쨌든 계획한 목록에서는 마지막 챕터이다. 그래프!!!!!!!!!!!!!! 오늘의 짤은 따로 없을 예정 하하 그래프도 참 나를 괴롭게했지...하...(기싫다).... 그림 출처 :https://python.plainenglish.io/graph-data-st.. sennieworld.tistory.com DFS : 말 그대로, 방향 그래프에서는 시작 노드부터 방향을 따라 깊숙히 탐색하는 것이다. BFS : 노드의 이웃 ..