알고리즘/개념 정리
-
개인적으로 알고리즘은 즉각적으로 바로 구현할 수 있도록 몸에 베어야 하되 복습하는 데 너무나 많은 시간을 투자해서는 안 되고, 문제를 풀면서 실전으로 익혀야 한다고 생각한다. 학기가 시작되면서 바빠진 만큼 지난 잊힌 알고리즘 개념들을 핵심과 코드만 짧게 정리하여 평소에도 자주 보면서 익숙해지고자 한다. 기본적으로 코드는 특별한 설명이 없으면 C++를 기반으로 한다. 접미사 배열(Suffix) 정의 문자열 $S$의 모든 접미사들을 사전 순으로 정렬한 배열. 여기서 접미사들은 문자열 $S$에서 시작 위치 번호로 관리한다. 문제 문자열 $S$="abcbca"의 접미사 배열을 구해보자. 접미사: "abcbca", "bcbca", "cbca", "bca", "ca", "a" 사전 순으로 정렬 시 "a", "abc..
접미사 배열(Suffix Array)과 LCP(Longest Common Prefix)개인적으로 알고리즘은 즉각적으로 바로 구현할 수 있도록 몸에 베어야 하되 복습하는 데 너무나 많은 시간을 투자해서는 안 되고, 문제를 풀면서 실전으로 익혀야 한다고 생각한다. 학기가 시작되면서 바빠진 만큼 지난 잊힌 알고리즘 개념들을 핵심과 코드만 짧게 정리하여 평소에도 자주 보면서 익숙해지고자 한다. 기본적으로 코드는 특별한 설명이 없으면 C++를 기반으로 한다. 접미사 배열(Suffix) 정의 문자열 $S$의 모든 접미사들을 사전 순으로 정렬한 배열. 여기서 접미사들은 문자열 $S$에서 시작 위치 번호로 관리한다. 문제 문자열 $S$="abcbca"의 접미사 배열을 구해보자. 접미사: "abcbca", "bcbca", "cbca", "bca", "ca", "a" 사전 순으로 정렬 시 "a", "abc..
2023.03.11 -
개인적으로 알고리즘은 즉각적으로 바로 구현할 수 있도록 몸에 베어야 하되 복습하는 데 너무나 많은 시간을 투자해서는 안 되고, 문제를 풀면서 실전으로 익혀야 한다고 생각한다. 학기가 시작되면서 바빠진 만큼 지난 잊힌 알고리즘 개념들을 핵심과 코드만 짧게 정리하여 평소에도 자주 보면서 익숙해지고자 한다. 기본적으로 코드는 특별한 설명이 없으면 C++를 기반으로 한다. 가장 긴 증가하는 부분 수열 Longest Increasing Subsequence(LIS) 정의 주어진 sequence의 모든 부분 수열(subsequence) 중 오름차순으로 정렬된 가장 긴 수열 문제 길이가 $N$인 임의의 수열 A의 Longest Increasing Subsequence(LIS) 길이를 구해보자. 방법 시간복잡도에 따라..
가장 긴 증가하는 부분 수열 Longest Increasing Subsequence(LIS)개인적으로 알고리즘은 즉각적으로 바로 구현할 수 있도록 몸에 베어야 하되 복습하는 데 너무나 많은 시간을 투자해서는 안 되고, 문제를 풀면서 실전으로 익혀야 한다고 생각한다. 학기가 시작되면서 바빠진 만큼 지난 잊힌 알고리즘 개념들을 핵심과 코드만 짧게 정리하여 평소에도 자주 보면서 익숙해지고자 한다. 기본적으로 코드는 특별한 설명이 없으면 C++를 기반으로 한다. 가장 긴 증가하는 부분 수열 Longest Increasing Subsequence(LIS) 정의 주어진 sequence의 모든 부분 수열(subsequence) 중 오름차순으로 정렬된 가장 긴 수열 문제 길이가 $N$인 임의의 수열 A의 Longest Increasing Subsequence(LIS) 길이를 구해보자. 방법 시간복잡도에 따라..
2023.03.06