| 자료구조 & 알고리즘/알고리즘
-
💡파이썬 Disjoint-Set(Union-Find) 이론 및 예제| 자료구조 & 알고리즘/알고리즘 2023. 11. 29. 01:49
알고리즘 코딩 테스트를 준비하다 보면 다양한 자료구조와 알고리즘을 만나게 됩니다. 그 중에서도 Disjoint-Set(서로소 집합)을 활용한 Union-Find는 중상난이도 문제에서 자주 출제되는 유형 중 하나입니다. 이번 글에서는 Disjoint-Set, Union-Find의 개념과 파이썬으로 구현하는 방법에 대해 알아보겠습니다. Disjoint-Set(Union-Find)이란? 단순히 disjoint-set은 서로 다른 두 집합(서로소 집합)을 뜻함 서로 다른 집합을 모아 하나의 집합으로 만드는 Union-find 알고리즘에 사용됨 사용되는 case 그래프에서 서로 다른 정점을 연결하는 최소 신장 트리를 구하는 문제 서로 다른 집합을 합치는 문제 등 수행 연산 Union: 두 개의 집합을 하나로 합치..
-
💡파이썬 기본 입/출력| 자료구조 & 알고리즘/알고리즘 2023. 10. 21. 12:16
입력 # 방법1 import sys a = int(sys.stdin.readline()) # 한 개의 정수를 입력받을 때. 개행 같이 입력되나 int 형변환 시 처리되어 사라짐 a, b, c = map(int, sys.stdin.readline().split()) # 여러 개의 정수를 입력받을 때 # 방법2 a = int(input()) # 한 개의 정수를 입력받을 때 => 느리므로 지양할 것. 마지막 개행은 안 받아짐. 출력 # 방법1 import sys sys.stdout.write("asd\n") # 개행 직접 처리해주어야 함 # 방법2 print("asd") # 느려서 지양, 자동개행. 마지막 개행 안하려면 print("asd", end='')
-
💡코딩테스트 준비를 위한 효과적인 알고리즘 공부 방법| 자료구조 & 알고리즘/알고리즘 2023. 10. 21. 10:44
코딩 테스트는 개발자 진로를 희망하는 학생, 취준생, 직장인들이 부딪히는 난관입니다. 저 또한 비전공자로 취준을 시작해서, 수많은 코딩테스트를 치러 왔고, 마침내 최종합격하여 개발자로서 일하고 있습니다. 제 경험을 바탕으로 "코딩테스트 준비를 위한 효과적인 알고리즘 공부 방법"을 정리해볼까 합니다. 언어 선택 프로그래밍 언어는 아주 다양합니다. C, C++, Java, Python, JavaScript, Kotlin, Go, C#, Rust, Dart, Swift, Objective-C, 엄랭(ㅋㅋ), 등등...코딩테스트를 학습하려면 먼저 어떤 언어로 코딩할건지 정해야겠죠. 저는 취준할 때 조금 미련하게 했습니다. C, Python, Kotlin, Go, Java 다섯 가지 언어로 코딩테스트를 대비했습니..
-
💡 [알고리즘] 거품정렬, 선택정렬, 삽입정렬| 자료구조 & 알고리즘/알고리즘 2021. 10. 26. 09:06
Bubble Sort (거품 정렬) 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘 첫번째 라운드가 끝나면 가장 큰 데이터가 맨뒤 N번째에 있게 되어서 2회차는 N-1번째까지만 정렬하고 3회차는 N-2번째까지 정렬하는 식으로 정렬해요 총 라운드는 (배열 크기-1) 번 진행되고, 각 라운드별 비교 횟수는 (배열 크기-라운드 횟수)이에요 시간 복잡도 : 최선, 평균, 최악 모두 O(N^2) 공간 복잡도 : 주어진 배열 안에서 교환(swap)을 통해 정렬이 수행되므로 O(n) 장점 추가적인 메모리 소비가 적어요 구현이 매우 쉬워요 안정 정렬, 제자리 정렬이에요 단점 다른 정렬 알고리즘에 비해 교환 과정이 많은 비효율적 알고리즘이에요 Selection Sort (선..