특징 리스트와 유사하지만 소괄호를 쓰고 선언된 값을 변경할 수 없음.리스트에 비해 상대적으로 공간 효율적임.사용하면 좋은 경우서로 다른 성질의 데이터를 묶어서 관리할 때. (ex. 최단 경로 알고리즘에서 비용,노드 번호 등의 형태) 해싱의 키 값으로 사용해야 할 때
정의 : 정렬 되어있는 리스트 에서 탐색 범위를 반으로 줄여가며 데이터를 탐색하는 방법.주로 사용되는 유형파라메트릭 서치 : 최적화 문제를 여러번의 결정 문제 (예, 아니오)로 바꾸어 해결하는 기법.특정한 조건을 만족하는 가장 알맞은 값을 빠르게 찾는 최적화 문제탐색
DP란 dp는 메모리를 사용해 수행 시간 효율을 향상 시키는 방법. 이전의 계산 값을 저장해 다시 계산하지 않도록 한다. 탑다운, 보텀업 방법으로 나뉜다. DP 문제의 조건 최적 부분 구조 큰 문제를 작은 문제로 나눌 수 있고 작은 문제의 값을 모아 큰 문제의
가장 짧은 경로를 찾는 알고리즘.한 지점에서 다른 지점까지의 최단 경로.한 지점에서 모든 지점까지의 최단 경로.모든 지점에서 다른 모든 지점까지의 최단 경로.지점은 노드로, 연결은 간선으로 표현됨특정란 노드에서 출발해 다른 모든 노드로 가는 최단 경로를 계산.음의 간선
서로소 판별을 위한 자료구조임.합집합 찾기, 찾기등 에 대한 연산을 지원함.연결된 최상위 부모를 찾을 때 쓰임.합집합 연산을 확인하여 서로 연결된 두 노드 A,B를 확인.A,B의 루트 노드 A',B' 찾음.A'을 B'의 부모 노드로 설정... 모든 합집합 연산을 처리할
그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미.주로 최소 비용으로 구선되는 신장 트리를 찾아야 할 때 사용함.예를 들어 N 개의 도시에서 최소한의 비용의 도로로 전체 도시를 연결하려고 할때!최소 신장 트리 알고리즘에 가장 대표적인 알고리즘
import mathn = 1000 array = True for i in range(n + 1) for i in range(2, int(math.sqrt(n)) + 1): if arrayi == True: j = 2
정규 표현식은 메타 문자를 사용한 문자 검색을 하는데, . ^ $ \* + ? {} \[] \\ | () 를 사용한다.문자 클래스는 \[]내부에 문자를 넣어 사용할 수 있다.xy : x or y 가 포함되는 것을 찾음.a-z : a ~ z 가 포함되는 문자를 찾음.a
문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조DFS 형태로 검색을 해보면 문자열을 탐색.목적문자열의 탐색을 하고자 할때, 시간적으로 훨씬 효율적이지만 저장 공간 크기가 크다는 단점이 있음.검색어 자동완성, 사전에서 찾기, 문자열 검사 등에 대표적으로
기존의 브루트포스 방식의 문자열 검색의 시간 복잡도인 O(NM) 의 비효율성을 생각하여 만들어진 알고리즘으로 KMP 알고리즘의 시간 복잡도는O(N+M) 으로 매우 빠른 성능을 보여줍니다. KMP 알고리즘에서는 먼저 접두사, 접미사의 개념과 Pi 배열의 개념을 알고 있어
먼저 사전적인 정의는해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법을 말합니다. 최적화 문제와 결정 문제를 푸는 방법이 됩니다.🙋 어라? DFS 아닌가요???네 저도 처음 봤을 때 그냥 DFS 인줄 알았습니다. 그러나 둘은 큰 차이점이 있는
알고리즘 문제 단골 문제로 기본적인 원칙과 중복순열, 중복조합 , NP , NC 까지 이해하고 암기까지 해야할 정도의 중요도를 지닌 개념이라서 한번 정리해보는 포스팅을 하겠습니다.순열 📖 : 서로다른 것들 중 몇 개를 뽑아서 한 줄로 나열. -> 순서에 따라 달라짐중
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로