알고리즘4 KMP 알고리즘 KMP 알고리즘은 빠른 문자열 검색을 돕는 알고리즘이다. 찾고자 하는 문자열을 pattern 이라고 하고 모든 문장을 all string 라고 하자. KMP 알고리즘을 구현하기 위해 해야할 것이 있다. 1. Pattern 문자열을 이용해 pi(파이)배열을 만들어야 한다. 2. pi 배열을 이용해 빠른 문자열을 검색해준다. pi배열 이란, Pattern 문자열에 있는 접두사 (Prefix) 와 접미사 (Suffix)가 같아 지는 최대 길이를 나열해 놓은 배열이다. 말로 설명하지니 좀 어려우므로 아래 그림을 통해 확인해보자. 예를 들어, pattern이 "abcdabc" 라면 단어의 길이가 7인데, 1개씩 늘려가며 접두사와 접미사가 겹치는 최대 길이를 나타내 보면, pi배열은 [0, 0, 0, 0, 1, 2.. 2023. 4. 26. [LeetCode] 623. Add One Row to Tree (Python) 623번 문제 링크 https://leetcode.com/problems/add-one-row-to-tree/ Add One Row to Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제설명 입력: root (TreeNode), val(int), depth (int) 출력: depth 깊이에 val 값이 추가된 root 트리 * depth가 1이라면 root자리에 node를 추가하고 원래 tree를 새 node의 left subtree로 오게하기 .. 2022. 10. 5. [LeetCode] 1578. Minimum Time to Make Rope Colorful (Python) 1578번 문제 링크 https://leetcode.com/problems/minimum-time-to-make-rope-colorful/ Minimum Time to Make Rope Colorful - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제설명 입력: colors 문자열, neededTime 정수 배열 출력: 풍선제거 최소시간 Alice는 같은 색깔의 풍선이 2개 이상 연속되는 것을 싫어한다고 한다. (성질 머리 하고는..) Bob에게 연속된 풍.. 2022. 10. 4. [LeetCode] 658. Find K Closest Elements (Python) 658번문제 링크 https://leetcode.com/problems/find-k-closest-elements/ 문제설명 입력: 정렬된 정수 배열 arr, 두 정수 k, x 출력: x와 가장 가까운 정수 k개를 담은 오름차순 배열 예시로 x와 더 가까운 것에 대한 정의로는 비교하고자 하는 값과 x의 차의 절댓값이 작은 것이 더 가까운 것으로 정의되고 절댓값이 같을경우 값이 더 작은 것이 x와 더 가까운 것으로 정의된다. 문제예제 Example1에서 보면 x = 3 이기 때문에 3과 가장 가까운 arr의 원소들을 살펴보면 (문제 정의에 따르면) 3, 2, 4, 1, 5 순서대로 arr과 가까운 것을 알 수 있다. 문제풀이 1. arr의 정렬순서를 x와 가장 가까운 순으로 정렬 하고자 했다. 2. sor.. 2022. 9. 29. 이전 1 다음