반응형

파이썬 38

[백준] 1181 단어 정렬 Python

1.  문제N개의 단어를 아래와 같이 정렬하는 프로그램을 작성하시오1. 길이가 짧은 것부터2. 길이가 같으면 사전 순으로단, 중복된 단어는 하나만 남기고 제거한다 단어의 개수 1  2. 접근 방식Python 내장 함수 sort() or sorted() 사용 + sorted() 포스팅  3. 전체 코드# 1. 길이가 짧은 것부터# 2. 길이가 작으면 사전 순으로# 알파벳 소문자로 이루어진 N개의 단어 정렬 (1

알고리즘 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] 재귀 함수 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

[백준] 1914 하노이의탑 Python

1. 문제세 개의 장대가 있고 첫 번째 장대에 반경이 서로 다른 n개의 원판이 반경이 큰 순서대로 쌓여있다. 아래 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮길 때 필요한 이동 순서를 출력하는 프로그램을 작성하라단, 이동 횟수는 최소가 되어야 한다 (원판의 개수는 1 1. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다2. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다   2. 알고리즘 분류* 임의 정밀도/ 큰 수 연산* 재귀 3. 접근 방식재귀 함수를 먼저 공부해야 한다왜냐하면 마지막 원판을 목표 기둥으로 보내기 위해서는 다른 원판들을 계속해서 옮겨야 하기 때문!쉽게 설명하자면, 나머지 원판들 (N-1) 은 임시 기둥 B 로 옮기고 제일 큰 원판 N 을 목표 기둥 C 로 보내고..

알고리즘 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] 분할 정복

분할 정복 Divide and Conquer큰 문제를 작은 문제들로 나누어 각 작은 문제를 해결한 후, 그 해를 결합하여 원래 문제를 해결하는 방법  기본적으로, 크고 복잡한 문제를 더 풀기 쉬운 작은 문제들로 나누고각각을 해결한 후 다시 합쳐서 문제를 해결하는 개념에서 출발한다 1. 분할 Divide 큰 문제를 더 작은 하위 문제로 나눈다2. 정복 Conquer 각 하위 문제를 재귀적으로 해결한다, 하위 문제가 충분히 작아지면 직접 해결    (하위 문제의 크기가 더 이상 나눌 수 없는 단위에 이르면 재귀 호출을 멈추고 해결)3. 결합 Combine 해결된 하위 문제들을 결합하여 원래 문제에 대한 해답을 구한다 * Divide 를 설계하면 Conquer 과정이 자동으로 쉬워지기 때문에 문제를 어떻게 나..

TIL/C언어 2024.09.09
반응형