자료구조 알고리즘

정말 정말 풀기 싫은 레벨3 를 풀었습니다레벨 2를 다 풀고 하면 되지 않나, 문제도 길고 조건이 많잖아ㅠ이 마인드로 하다가 고득점 kit 에 더이상 풀 레벨2 가 없어서 눈물을 머금고 도전,,,이것저것 해보다가 한시간 좀 넘게 걸렸는데 할만한데 뭔가 다른 사람 풀이 보니까 다들 잘혀~,,,,,좀 fansy 하게 풀지를 못했고,, 코드 좀 길긴해..그래도 중간중간 chatgpt 키고 싶은 마음 꾹 참으면서 일요일 아침을 잘 보냈네요..https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 배운 것그..
문제 설명초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.prices의 길이는 2 이상 100,000 이하입니다.입출력 예pricesreturn[1, 2, 3, 2, 3][4, 3, 1, 1, 0]입출력 예 설명1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.5초 시점의 ₩3은 0초간 가격이 떨어지지 않..
두번째 자료부터 시작, 그 앞 자료들과 비교하여 삽입 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘 def insertionSort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and key < arr[j]: arr[j+1] = arr[j] j -= 1 arr[j+1] = key 시간복잡도 최선: O(n), 평균/최악: O(n^2) 공간복잡도 O(n) 장점 단순 이미 정렬되어 있을 경우 효율적 제자리 정렬 안정 정렬 단점 비효율적 배열의 길이가 길어질수록 비효율적 References https://github.com/GimunLee/tech-refrigerator/blob/master..
해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 어떤 원소를 넣을지 선택하는 알고리즘 최소값을 찾고 위치 값과 교환. 나머지도 같은 방법으로 교체. A = [64, 25, 12, 22, 11] for i in range(len(A)): min_idx = i for j in range(i+1, len(A)): if A[min_idx] > A[j]: min_idx = j A[i], A[min_idx] = A[min_idx], A[i] 시간복잡도 O(n^2) 공간복잡도 O(n), swap을 주어진 배열 안에서 수행 장점 단순한 알고리즘 제자리 정렬(in-place sorting) 정렬을 위한 비교횟수는 많으나 bubble sort에 비해 실제 교환횟수는 적음 단점 비효율적. 시간 복잡도 O(n^2) 불안정..
서로 인접한 두 원소의 대소를 비교, 조건에 맞지 않으면 자리를 교환하며 정렬하는 알고리즘 void bubbleSort(int arr[], int n) { int i, j; for(i = 0; i arr[j+1]) swap(arr[j], arr[j+1]); def bubbleSort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[i] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] 시간복잡도 모두 O(n^2) 공간복잡도 O(n), 주어진 배열 안에서 swap 사용으로 장점 구현 간단, 직..
B-Tree의 노드의 추가적인 생성관 연산을 최소화하기 위해 삽입, 삭제 시 발생하는 노드 분리를 줄이려고 고안됨 노드가 가득찰 경우 분열 대신 형제 노드로 재배치 정렬되어있고 중복 X 모든 leaf node는 같은 레벨 root node는 leaf node가 아닌 경우 적어도 2개 이상의 자식 노드를 가짐 root node, leaf node 가 아닌 내부 노드는 2((M-2)/3) + 1 ~ M 개의 자식 노드를 가지고 있음 References https://ssocoit.tistory.com/217 [자료구조] 간단히 알아보는 B-Tree, B+Tree, B*Tree 위 글을 보고 정리를 하지 않을 수 없었습니다. 가슴이 시키네요;; 그렇다면 바로 B-Tree, B*Tree, B+Tree의 특징에 ..
같은 레벨의 모든 키값들이 정렬됨 같은 레벨의 sibling node는 연결리스트 형태로 연결되어있음 모든 leaf node는 연결리스트로 연결되어 있음 키값 중복 X, 탐색 유리 블럭 사이즈를 더 많이 이동할 수 있음(key 값에 대한 하드디스크 주소 X) 그러나 무조건 leaf node 까지 내려가야함 삽입, 삭제 모두 leaf node에서 이루어짐 모든 leaf node는 같은 레벨 leaf node가 아닌 node의 키 값의 수는 그 노드의 서브트리수-1 단말 노드 비단말 노드 인덱스 노드 : leaf node가 아닌 자료, value값에 다음 노드를 가리키는 포인터 주소 존재 데이터 노드 : lead node 자료, value값에 데이터가 존재 References https://ssocoit.t..
정렬된 균형이진트리 하나의 노드에 많은 정보를 가지거나, 두 개 이상의 자식을 가질 수 있음 중복없음 모든 leaf node는 같은 레벨에 있음 root node는 자신이 leaf node가 아닌 이상 최소 2개 이상의 자식을 가짐 내부 노드(root, leaf node 이외) M/2 ~ M개의 자식을 가짐 노드는 M/2 - 1 ~ M - 1 개의 데이터(키)가 포함될 수 있음 자식 수의 하한값이 t, M = 2t - 1 데이터가 k, 자식 노드의 수는 k+1 검색은 O(logn) 구조 유지를 위해 추가적인 연산이 수행되거나 새로운 노드를 생성함 -> 최소화를 위해 B*Tree 등장 탐색을 위해서 노드를 찾아서 이동해야함 -> 해소를 위해 B+Tree 등장 아래의 조건 위반 시 재구조화 내부노드는 M/2..
내공얌냠
'자료구조 알고리즘' 카테고리의 글 목록