티스토리

컴돈AI
검색하기

블로그 홈

컴돈AI

comdon-ai.tistory.com/m

컴돈AI 님의 블로그입니다.

구독자
1
방명록 방문하기

주요 글 목록

  • [Git] commit 내역 살펴보기 목차git status(commit 되기 전의 상태 확인)"git status"의 경우 commit 된 내역을 살펴보는 명령어가 아닌, commit 되기 전 Staging Area에 올라온 변경사항과 Staging Area에 올라오지 않은 변경사항을 확인할 때 사용하는 명령어입니다. 즉, git status는 commit 내역을 살펴보는 것이 아닌, commit을 하기 전 최근 commit 된 상태로부터 단순하게 현재 시점의 변경사항을 확인하는 명령어입니다.git status 참고 : https://comdon-ai.tistory.com/201HEAD"HEAD"는 여러 commit 내역들 중에서 현재 Working Directory의 상태가 어떤 commit에 있는지 표시해 주는 것입니다.git으로 버전.. 공감수 0 댓글수 0 2024. 5. 1.
  • [Git] Git의 기본 목차Git이란?Git이란 간단히 말하면 코드 버전 관리 시스템입니다. Git의 작업영역Working Directory / Staging Area / Local repository / Remote repositoryWorking Directory현재 로컬환경에서 작업 중인 프로젝트 폴더Staging Areacommit 하기 전 commit 할 파일들을 모아두는 공간commit 시 Staging Area안의 내용이 한 번에 Local Repository에 반영Local Repositorycommit된 파일들이 위치하는 영역 (이를 통해 버전 관리를 진행합니다.)Remote Repository협업이나 백업을 위해 존재하는 원격 저장소git 시작"git init"을 통해 Local Repository를 생성할 .. 공감수 0 댓글수 0 2024. 4. 30.
  • [자료구조] 힙(Heap) 목차 힙(Heap) 우선순위 큐(Priority Queue) 힙을 보기전에 먼저 우선순위 큐를 살펴보도록 하겠습니다. 우선순위 큐는 각각의 원소가 우선순위를 가지고 있으며, 우선순위가 높은 순서대로 원소를 제거할 수 있는 추상 데이터 타입( Abstract Data Type, ADT )입니다. 추상 데이터 타입(Abstract Data Type, ADT)은 데이터와 그 데이터에 대한 연산들을 추상적으로 정의한 것입니다 ADT는 데이터의 타입과 그 타입에 대해 수행할 수 있는 연산들의 집합으로 구성되지만, 이러한 연산들의 구현 방법은 정의하지 않는 것입니다. ADT 예시 스택(Stack) ADT는 데이터의 삽입(push), 삭제(pop), 조회(peek) 등의 연산을 정의하지만, 이러한 연산들이 배열을 사.. 공감수 0 댓글수 1 2024. 4. 20.
  • [자료구조] 이진 탐색 트리(BST:Binary Search Tree) 목차 이진 탐색 트리(BST:Binary Search Tree) 개념 이진 탐색 트리의 각 노드의 값은 왼쪽 서브트리에 있는 값들보다 커야 하고, 오른쪽 서브트리에 있는 값들보다는 작아야 합니다. 삽입 def insert(self, data): if self.root is None: self.root = Node(data) else: self._insert(self.root, data) def _insert(self, parent_node, data): if data < parent_node.data: if parent_node.left is None: parent_node.left = Node(data) else: self._insert(parent_node.left, data) else: if par.. 공감수 0 댓글수 0 2024. 4. 20.
  • [자료구조] 버킷 정렬(Bucket Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 버킷 정렬(Bucket Sort) 개념 버킷 정렬은 주어진 배열을 범위를 나눠서 여러 개의 버킷(빈)으로 나누어 담은 뒤 각각의 버킷을 정렬하는 방식입니다. 각각의 버킷에 기존의 정렬 알고리즘을 적용하여 정렬을 진행합니다. 따라서 Non-comparison 기반 정렬이면서, comparison 기반 정렬이 됩니다. 버킷 정렬은 데이터가 균등하게 분포.. 공감수 0 댓글수 0 2024. 4. 17.
  • [자료구조] 기수 정렬(Radix Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 기수 정렬(Radix Sort) 개념 Radix Sort는 기존 Counting Sort(계수 정렬) 방식에서의 단점을 보완하기 위해 나온 방법입니다. Counting Sort의 경우 K(최댓값과 최솟값의 차이)가 커지게 되면 메모리를 많이 차지하게 되어 작업 속도가 느려질 수 있어 Counting Sort의 장점이 사라지게 됩니다. 또한 Count.. 공감수 0 댓글수 0 2024. 4. 17.
  • [자료구조] 계수 정렬(Counting Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 계수 정렬(Counting Sort) 개념 non-comparison 기반 정렬에서 가장 간단한 정렬 방법입니다. 주어진 값의 범위가 한정적일 때 유용한 방법입니다. 주어진 값의 범위에 대한 count 배열을 생성해 줍니다. 그 후 해당 count 배열을 앞에서부터 누적합을 계산해 줍니다. 이럴 경우 이제 배열에서 특정값에 대한 시작 인덱스를 확인할.. 공감수 0 댓글수 0 2024. 4. 17.
  • [자료구조] 퀵 정렬(Quick Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 퀵 정렬(Quick Sort) 개념 퀵 정렬은 기준값(Pivot)을 중심으로 Pivot보다 작으면 왼쪽, 크면 오른쪽으로 분할해 줍니다. 그런 다음 분할된 하위 리스트들을 다시 재귀적으로 pivot을 뽑고 pivot보다 작으면 왼쪽, 크면 오른쪽으로 분할해 줍니다. 이런 식으로 쭉 진행하게 되면 정렬된 리스트를 얻을 수 있습니다. 퀵 정렬은 병합 정.. 공감수 0 댓글수 0 2024. 4. 17.
  • [자료구조] 병합 정렬(Merge Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 병합 정렬(Merge Sort) 개념 병합 정렬은 분할 정복을 이용한 비교 기반 정렬입니다. 분할 정복은 일종의 DP랑 유사한 방법입니다. 따라서 분할 정복 역시 DP와 마찬가지로 하향식 접근(Top-Down)과 상향식(Bottom-Up) 접근이 존재합니다. 하향식 접근 : 재귀를 이용 상향식 접근 : 반복을 통해 모든 값 표 채우기 다만 DP는 분.. 공감수 0 댓글수 0 2024. 4. 16.
  • [자료구조] 힙 정렬(Heap Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 힙 정렬(Heap Sort) 개념 먼저 선택 정렬을 할 때, 가장 작은 값을 찾은 뒤 앞으로 이동했습니다. 이 과정을 전체 값들이 정렬이 될 때까지 반복해서 진행했습니다. 이로 인해 시간은 O(N^2)이 소요되게 되었습니다. 이를 이제 힙이라는 특별한 자료구조를 사용하게 되면 이를 개선할 수가 있습니다. 힙 : https://comdon-ai.tis.. 공감수 0 댓글수 0 2024. 4. 16.
  • [자료구조] 삽입 정렬(Insertion Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 삽입 정렬(Insertion Sort) 개념 리스트의 시작부터 하나책마다 왼쪽에 있는 책들과 비교해서 자기보다 작은 책이 나올 때까지 번갈아가며 껴줍니다. 정렬되지 않은 책장이 있을 때 앞에서부터 왼쪽에 있는 책들과 비교를 하면서 자기 크기에 맞는 곳에 넣어주는 것입니다. 즉, 2 3 5 6 7 4가 있을 때 4는 자기보다 작은 값인 3 뒤로 삽입되.. 공감수 0 댓글수 0 2024. 4. 16.
  • [자료구조] 버블 정렬(Bubble Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 버블 정렬(Bubble Sort) 개념 버블 정렬은 두 개의 인접한 요소를 비교하여 작은 값을 앞으로 보내주는 과정을 기반으로 정렬하게 됩니다. 이러한 과정을 앞에서부터 뒤에까지 쭈욱 진행하면, 작은 값들이 한 칸씩 앞으로 이동하게 될 것입니다. 이러한 과정은 swap 과정이 발생하지 않을때까지 진행되게 됩니다. 만약 제일 작은 값이 제일 뒤에 있다.. 공감수 0 댓글수 0 2024. 4. 16.
  • [LeetCode] Sort Colors 목차 문제 공간복잡도를 O(1)로 정렬하는 문제입니다. 0,1,2 으로 구성된 array가 있을 때 정렬하는 문제입니다. 대부분의 정렬 예시 Input: nums = [2,0,2,1,1,0] Output: [0,0,1,1,2,2] Input: nums = [2,0,1] Output: [0,1,2] 제약사항 n == nums.length 1 공감수 0 댓글수 0 2024. 4. 16.
  • [자료구조] 선택 정렬(Selection Sort) 목차 정렬 종류 비교 기반 정렬(Comparison Based Sorts) - Selection Sort, Bubble Sort, Insertion Sort, Heap Sort, Merge Sort, Quick Sort 비비교 기반 정렬(Non-comparison Based Sorts) - Counting Sort, Radix Sort, Bucket Sort 선택 정렬(Selection Sort) 개념 선택 정렬은 제일 작은 값을 찾고 앞에 있는 값들과 하나씩 변경하는 과정입니다. 단순하게 그냥 정렬 방식을 생각했을 때 떠올릴 수 있는 가장 쉬운 방법입니다. 정렬되어 있지 않은 책장이 있을 때, 모든 책을 살핀 뒤 제일 크기가 작은 책과 제일 왼쪽에 있는 책과 바꾸어 책장에 넣습니다. 그 후에 이제 나머.. 공감수 0 댓글수 0 2024. 4. 15.
  • [자료구조] 링크드 리스트(Linked List) 목차 링크드 리스트(Linked List) 개념 Linked List는 Node라는 구조체로 이루어져 있습니다. Node는 data와 인접한 Node의 주소(address)를 저장하고 있습니다. 하나의 Array는 data만 저장하기 때문에 각 공간의 크기는 4byte였습니다. 하지만 Linked List의 경우 주소까지 저장해 야하기 때문에 하나의 공간에는 8byte의 공간이 사용됩니다. 인접한 Node의 주소를 저장하기 때문에, Array처럼 기존 고정된 크기의 연속된 메모리 공간을 할당할 필요 없습니다. 데이터가 추가되는 시점에 메모리를 할당해 주면 됩니다. 불연속적(discontinuous) 링크드 리스트 종류 Singly Linked List Doubly Linked List Singly Lin.. 공감수 0 댓글수 0 2024. 4. 15.
  • [자료구조] 배열(Array) 목차 배열(Array) 개념 Array는 미리 할당된 크기의 메모리에 연속적으로 data를 저장하는 자료구조입니다. C언어에서 배열의 각 크기는 4byte입니다. Array는 미리 할당된 크기에 data를 저장하는 한계점이 존재합니다. → 이는 Dynamic Array를 통해 보완가능합니다. 만약 미리 할당된 크기를 넘어설 경우, 더 큰 Array를 선언하고 그 Array에 기존 데이터를 옮겨 담습니다. 더 큰 Array의 size는 일반적으로 기존 Array size의 2배를 할당합니다. (doubling 방법) 데이터를 옮겨 담을 때는 O(n) 시간이 걸립니다. 즉, 기본적으로 제일 뒤에 데이터를 추가할 때는 O(1)이지만, 만약 기존 크기를 넘어서는 순간 제일 뒤에 데이터를 추가하게 되면 새로운 A.. 공감수 0 댓글수 0 2024. 4. 15.
  • [LeetCode] Pascal's Triangle II 목차 문제 파스칼 삼각형에서 rowIndex 번째의 값을 O(rowIndex)공간만 사용하여 해결하는 문제입니다. 예시 Input: rowIndex = 3 Output: [1,3,3,1] Input: rowIndex = 0 Output: [1] Input: rowIndex = 1 Output: [1,1] 제약사항 0 List[int]: return [math.comb(rowIndex,i) for i in range(rowIndex+1)] 알게 된 내용 이항계수 성질 파스칼 삼각형 출처 https://leetcode.com/explore/learn/card/array-and-string/204/conclusion/1171/ 공감수 0 댓글수 0 2024. 4. 15.
  • [LeetCode] Rotate Array 목차 문제 주어진 배열을 k만큼 rotate 시키는 문제입니다. (단, 추가적인 공간을 생성하지 않고 문제를 해결해야 합니다.) 예시 Input: nums = [1,2,3,4,5,6,7], k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 steps to the right: [7,1,2,3,4,5,6] rotate 2 steps to the right: [6,7,1,2,3,4,5] rotate 3 steps to the right: [5,6,7,1,2,3,4] Input: nums = [-1,-100,3,99], k = 2 Output: [3,99,-1,-100] Explanation: rotate 1 steps to the right: [99,-1,-100,3.. 공감수 0 댓글수 0 2024. 4. 15.
  • 순열, 조합, 중복순열, 중복조합 목차 순열(Permutations) 순열은 주어진 원소들로 만들 수 있는 모든 가능한 순서 있는 배열입니다. (순서가 중요한 경우) 시간복잡도 : O(nPr) 예시 itertools 라이브러리 이용 코드 from itertools import permutations print(list(permutations([1, 2, 3, 4, 5], 3))) 직접구현 코드 def permutations(arr, r): def generate(arr, prefix=[]): if len(prefix) == r: result.append(prefix) return for i in range(len(arr)): generate(arr[:i] + arr[i + 1 :], prefix + [arr[i]]) result = [].. 공감수 0 댓글수 1 2024. 4. 10.
  • [LeetCode] Minimum Size Subarray Sum 목차 문제 연속된 배열에서 특정 구간의 합이 target보다 커지는 구간 중 구간 길이가 최소인 길이를 구하는 문제입니다. 예시 Input: target = 7, nums = [2,3,1,2,4,3] Output: 2 Explanation: The subarray [4,3] has the minimal length under the problem constraint. Input: target = 4, nums = [1,4,4] Output: 1 Input: target = 11, nums = [1,1,1,1,1,1,1,1] Output: 0 문제 풀이 풀이 1 : 완전탐색 풀이 단순하게 모든 i~j 까지에 대해서 Sum을 계산하는 방식입니다. i, j ,sum함수 -> n^3의 시간복잡도를 가집니다. 코.. 공감수 1 댓글수 1 2024. 4. 10.
  • [LeetCode] Two Sum II 목차 문제 numbers에서 두 개의 값을 뽑았을 때 target값이 되는 index1과 index2를 찾는 문제입니다. 예시 Input: numbers = [2,7,11,15], target = 9 Output: [1,2] Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2]. Input: numbers = [2,3,4], target = 6 Output: [1,3] Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3]. Input: numbers = [-1,0], target = -1 Out.. 공감수 0 댓글수 0 2024. 4. 10.
  • [LeetCode] Implement strStr() 목차 문제 B 문자열이 A 문자열에 있는지 체크하고, 있다면 최초로 등장한 인덱스를 반환하는 문제입니다. 예시 Input: haystack = "sadbutsad", needle = "sad" Output: 0 Explanation: "sad" occurs at index 0 and 6. The first occurrence is at index 0, so we return 0. Input: haystack = "leetcode", needle = "leeto" Output: -1 Explanation: "leeto" did not occur in "leetcode", so we return -1. 제약사항 1 int: n = len(haystack) m = len(needle) if n < m: ret.. 공감수 0 댓글수 0 2024. 4. 10.
  • [LeetCode] Add Binary 목차 문제 이진수로 표현된 문자열 두 개를 더해 이진수로 표현된 문자열을 반환하는 문제입니다. 예시 Input: a = "11", b = "1" Output: "100" Input: a = "1010", b = "1011" Output: "10101" 제약조건 1 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Spiral Matrix 목차 문제 문제 풀이 풀이 1 : Rotate후 첫 행씩 추가해주기 Rotate후 첫 행을 answer에 계속해서 넣어줍니다. 코드 class Solution: def rotate270(self,arr): return [item for item in zip(*arr)][::-1] def spiralOrder(self, matrix: List[List[int]]) -> List[int]: answer = [] while matrix: answer+=matrix[0] matrix = self.rotate270(matrix[1:]) return answer 시간복잡도 O(MN) 알게 된 내용 행렬 Transpose example_matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] de.. 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Find Pivot Index 목차 문제 pivot 기준 왼쪽의 합과 오른쪽 합이 같아지는 pivot의 인덱스를 구하는 문제입니다. 예시 Input: nums = [1,7,3,6,5,6] Output: 3 Explanation: The pivot index is 3. Left sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 Right sum = nums[4] + nums[5] = 5 + 6 = 11 Input: nums = [1,2,3] Output: -1 Explanation: There is no index that satisfies the conditions in the problem statement. Input: nums = [2,1,-1] Output: 0 Explanation: .. 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Height Checker 목차 문제 heights를 정렬했을 때의 위치와 기존 위치가 같지 않은 개수를 구하는 문제입니다. 예시 Input: heights = [1,1,4,2,1,3] Output: 3 Explanation: heights: [1,1,4,2,1,3] expected: [1,1,1,2,3,4] Indices 2, 4, and 5 do not match. Input: heights = [5,1,2,3,4] Output: 5 Explanation: heights: [5,1,2,3,4] expected: [1,2,3,4,5] All indices do not match. Input: heights = [1,2,3,4,5] Output: 0 Explanation: heights: [1,2,3,4,5] expected: [.. 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Valid Mountain Array 목차 문제 다음 조건을 만족하는지 여부를 체크하는 문제입니다.(산형태가 되어야 함.) arr.length >= 3 There exists some i with 0 arr[i + 1] > ... > arr[arr.length - 1] 예시 Input: arr = [2,1] Output: false Input: arr = [3,5,5] Output: false Input: arr = [0,3,2,1] Output: true 제약조건 1 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Check If N and Its Double Exist 목차 문제 arr안에서 다음 조건을 만족하는 인덱스 쌍이 존재하는지 체크하는 문제입니다. i != j 0 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Remove Duplicates from Sorted Array 목차 문제 오름차순으로 정렬된 nums 배열에서 중복된 값들을 제외한 값들의 개수를 구하는 문제입니다. 예시 Input: nums = [1,1,2] Output: 2, nums = [1,2,_] Input: nums = [0,0,1,1,1,2,2,3,3,4] Output: 5, nums = [0,1,2,3,4,_,_,_,_,_] 제약사항 1 공감수 0 댓글수 0 2024. 4. 8.
  • [LeetCode] Remove Element 목차 문제 특정 리스트에서 특정 값들을 모두 제거하고 남은 리스트의 길이를 구하는 문제입니다. 예시 Input: nums = [3,2,2,3], val = 3 Output: 2, nums = [2,2,_,_] Input: nums = [0,1,2,2,3,0,4,2], val = 2 Output: 5, nums = [0,1,4,0,3,_,_,_] 제약조건 0 공감수 0 댓글수 0 2024. 4. 8.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.