반응형

TIL/Python 30

[TIL] itertools 순열 조합 구하기 Python

2309 일곱 난쟁이에서 조합이 필요하다고 해서 itertools 를 공부한다  순열 - 순서를 고려하여 뽑는 경우의 수 서로 다른 n 개에서 r 개를 선택하여 일렬로 나열하는 경우의 수조합 - 순서를 생각하지 않고 뽑는 경우의 수서로 다른 n 개에서 순서를 생각하지 않고 r 개를 택하는 경우의 수 중복 순열 Permutation with Repetition중복 가능한 n 개에서 r 개를 택하여 일렬로 나열하는 경우의 수 중복 조합 Combination with Repetition중복 가능한 n 개에서 순서를 생각하지 않고 r 개를 택하는 경우의 수 순열과 조합 예제 import itertoolschars = ['A', 'B', 'C']p = itertools.permutations(chars, 2) ..

TIL/Python 2024.09.13

[TIL] sorted() Python

1181 단어 정렬을 풀면서 sorted() 개념을 정리한다 sorted()데이터를 정렬하는 가장 기본적인 파이썬 내장 정렬 함수* 데이터 ; 리스트, 튜플, 문자열, 딕셔너리 함수 포맷sorted(iterable, key=None, reverse=False)sorted(정렬할 데이터)sorted(정렬할 데이터, reverse 파라미터)sorted(정렬할 데이터, key 파라미터)sorted(정렬할 데이터, key 파라미터, reverse 파라미터) 파라미터1) 정렬할 데이터 ; Iterable 한 데이터 이어야 한다 2) Reverse 파라미터오름차순으로 정렬할지 내림차순으로 정렬할지 정할 . 수있다Default 는 reverse=False  3) Key 파라미터어떤 것을 기준으로 정렬할 것인가? so..

TIL/Python 2024.09.13

[TIL] 큐 Queue Python

큐 Queue 스택과 같이 데이터를 임시 저장하는 자료 구조First In First Out 선입선출 FIFO 구조   일상 예시, 카페에서 계산하고 커피를 받는 줄 Buffer (완충기억기) - 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역 컴퓨터 장치들 사이에서 data 를 주고 받을 때, 각 장치 사이에서 존재하는속도 차이나 시간 차이를 극복하기 위해 임시 기억 자치의 자료 구조로 Queue 를 사용한다    큐 작업Enqueue 큐에 데이터를 추가하는 작업Dequeue 데이터를 꺼내는 작업Front 데이터를 꺼내는 쪽Rear 데이터를 넣는 쪽  배열로 큐 구현하기디큐를 할 때 배열에서 2번째 이후의 모든 원소를 하나씩 앞으로 옮긴다 인큐 처리 복잡도..

TIL/Python 2024.09.12

[TIL] 스택 Stack Python

스택 Stack데이터를 임시 저장하는, 하나씩 쌓아 올린 형태의 자료 구조LIFO - Last In First Out 또는 FILO - First In Last Out  like 식당에 쌓여있는 접시, 프링글스, 콘 아이스크림 아래에서부터 쌓고, 위에서부터 꺼내는 방식스택의 동작은 모두 Top 이라는 스택의 한쪽 끝에서만 일어난다  스택 구성stk 스택 배열 - 푸시한 데이터를 저장하는 스택 본체인 list 형 배열 capacity 스택 크기 - 스택의 최대 크기를 나타내는 int 형 정수 ptr 스택 포인터 - 스택이 쌓여 있는 데이터를 개수를 나타내는 정수값 스택의 연산 push() Top 에 있는 원소를 제거 pop(x) 원소 x 를 Top 에 추가 peek() 스택의 상단에 있는 항목을 제거하지 ..

TIL/Python 2024.09.11

[TIL] 재귀 함수 Recursion Function Python

하노이의 탑을 풀기 전에 재귀 함수의 개념 먼저 정리한다  재귀 Recursive 반복 Iterative   재귀 함수 Recursion Function 자기 자신을 다시 호출해 작업을 수행하는 방식자신의 로직을 내부적으로 반복단, '함수 자신' 이 아니라 자기 자신과 똑같은 함수'를 호출하는 것이다! 혼동 주의반복문으로 구현 가능한 로직은 모두 재귀함수로 구현이 가능하고 그 반대도 가능하다  * Base Case 더 이상 문제를 쪼갤 필요가 없는, 종료 조건에 도달한 경우* Recursive Case 문제를 작은 문제들로 나누어 해결하는 과정   + 09/18 WED 나중에 읽어봐야지 https://velog.io/@eddy_song/you-can-solve-recursion 예시01 팩토리얼 함수 1..

TIL/Python 2024.09.11

[TIL] 병합 정렬 Merge Sort Python

병합 정렬일단 반으로 나누고, 나중에 합쳐서 정렬한다  1. 하나의 리스트를 두 개의 균등한 크기로 분할하고 2. 분할된 부분 리스트들을 정렬해서 3. 정렬된 부분 리스트들을 합친다  퀵 정렬과의 차이점 병합 정렬 Merge Sort퀵 정렬 Quick Sort시간 복잡도최악의 경우에도 O(N* logN) 보장 최악의 경우 O(N^2)진행 방법 정확히 반절씩 나눈다 피벗 값에 따라서 편향되게 분할할 가능성이 있다공간 복잡도메모리 활용 비효율적(기존의 데이터를 담을 추가적인 배열 공간 필요)  Merge Sort 를 Python 으로 구현해보기  1번 방식mergeSortdef mergeSort(a): # a 의 길이가 1 이하이면 끝 if len(a)  Mainif __name__ == "__m..

TIL/Python 2024.09.10

[TIL] 퀵 정렬 Quick Sort 추가 공부

09/10 TUE 퀴즈를 대비한 퀵 정렬 추가 공부  퀵 정렬 Quick Sort분할 정복 알고리즘의 대표 예시  Pivot 값을 중심으로 작은 값/ 큰 값을 계속 나누기 때문에 재귀 함수임 방식1) 르모토 - 월 같은 걸 추가한다 (이건 나중에 추가 공부하고 해주신대)2) 호어 Hoare - Pivot 으로 판단한다 (Left + Right) // 2 를 Pivot 으로 설정하고, Pivot 기준으로 왼쪽은 작은 값, 오른쪽 큰 값 비교하여 서로 반대인 경우 Swap 첫번째 비교가 완료되면 Pivot 기준 왼쪽/ 오른쪽으로 또 쪼개서 Pivot 만들어정렬을 완료한다 + Pivot 을 arr[0] 에 줘도 되고, 어디에 주던 본인 마음임+ while 문 안에서 Pivot 의 위치는 바뀔 수 있지만 Piv..

TIL/Python 2024.09.09

[TIL] 정렬

DO IT 알고리즘입문 CH06 CH06 정렬 알고리즘정렬 Sorting 이름, 학번, 학점 등의 키 Key 를 항목값의 대소 관계에 따라 데이터 집합을 일정한 순서로 바꾸어 늘어놓는 작업 오름차순 Ascending Order 값이 작은 데이터를 앞쪽에 늘어놓는 것내림차순 Descending Order 값이 큰 데이터를 앞쪽에 늘어놓는 것안정적인 알고리즘 - 값이 같은 원소의 순서가 정렬한 후에도 유지되는 알고리즘안정적이지 않은 알고리즘 - 정렬한 후에도 원래의 순서가 유지된다는 보장이 없다내부 정렬 Internal Sorting 정렬할 모든 데이터를 하나의 배열에 저장할 수 있는 경우에 사용외부 정렬 External Sorting 정렬할 데이터가 많아서 하나의 배열에서 작업할 수 없는 경우 사용정렬 알..

TIL/Python 2024.09.09
반응형