반응형

2024/09/10 4

[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

[백준] 2750 수 정렬하기 Python

1. 문제https://www.acmicpc.net/problem/2750N 개의 수가 주어졌을 때, 오름차순으로 정렬하는 프로그램을 작성하시오첫째 줄에 수의 개수가 주어진다 (1 2. 접근 방식Quick Sort 를 이용하여 오름차순으로 정렬하기  3. 전체 코드 Quick Sort 개념과 코드는 아래 포스팅에 정리했다 https://helloahram.tistory.com/entry/TIL-%ED%8C%80-%EC%8A%A4%ED%84%B0%EB%94%94-%ED%80%B5-%EC%A0%95%EB%A0%AC

알고리즘 2024.09.10

[백준] 1914 하노이의탑 Python

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

알고리즘 2024.09.10
반응형