CS (9) 썸네일형 리스트형 [알고리즘] 문자열 검색 브루트 포스(Brute Force) 선형검색을 단순하게 확장한 것으로 가능한 모든 위치에서 패턴을 일치시키는 과정을 반복하여 검색하는 방법이다. 예시 # 브루트 포스 # 문자열에서 C 찾기(대소문자 구분 X) string = input("영어 문자열을 입력해주세요 : ") matchContainer = [] for idx,c in enumerate(string): if c.upper() == 'C': print(f'"{c}" match? -> Yes') matchContainer.append(idx) else: print(f'"{c}" match? -> No') if matchContainer == []: print("문자열 내에 C가 없습니다.") else: print(f"문자열 {string}에서 C.. [알고리즘] 정렬 정렬 정렬이란 값을 대소 관계에 따라 일정한 순서로 늘어놓는 작업을 의미한다. 정렬을 사용하면 검색을 더 쉽게 할 수 있다. 오름차순 정렬(Ascending order) : 값이 작은 데이터를 앞쪽에 배치 내림차순 정렬(descending order) : 값이 큰 데이터를 앞쪽에 배치 버블 정렬(Bubble Sort) 이웃한 두 원소의 대소 관계를 비교하여 필요에 따라 교환을 반복하는 정렬 알고리즘이다. 시간복잡도(Time Complexity) 최선의 경우(정렬된 배열이 주어진 경우): O(n) 이 경우에는 인접한 원소를 비교하고 교환할 필요가 없기 때문에 한 번의 순회만으로 정렬이 완료된다. 평균 및 최악의 경우: O(n^2) 버블 정렬은 인접한 원소를 비교하고 교환하는 과정을 n-1번 수행한다. 각 .. [알고리즘] 재귀 재귀(Recursion) 재귀란 어떠한 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의되는 경우를 말한다. 재귀를 사용하면 특정 프로그램을 간결하고 효율성 좋게 작성할 수 있다. 가장 대표적인 예시로 팩토리얼(Factorial)이 있다. 팩토리얼은 양의 정수를 순서대로 곱한다는 의미로 "순차 곱셈"이라고도 한다. ex. 0! = 1, 2! = 1 x 2 = 2 팩토리얼은 일정한 공식 있는데, 10!은 10 x 9!과 같이 나타낼 수 있다. 이를 일반화하면 n! = n x (n-1) x .... x 1와 같이 나타 낼 수 있다. 이 공식를 사용하여 팩토리얼을 구하는 재귀 함수와 일반 함수를 작성해서 비교해보자. # 일반함수로 팩토리얼 구현 def factorial(n:int)->int: s.. [자료구조] 스택, 큐, 파이썬 내장 자료구조 및 라이브러리 스택 (Stack) LIFO(Last In First Out) 방식의 자료구조 이다. Push : 데이터를 넣는 작업 Pop : 데이터를 꺼내는 작업 Top : 스택의 제일 위 부분 Bottom : 스택의 제일 아래 부분 큐 (Queue) FIFO(First In First Out) 방식의 자료구조 이다. Enqueue : 데이터를 추가하는 작업 Dequeue : 데이터를 꺼내는 작업 front : 큐에서 데이터를 꺼내는 쪽 rear : 큐에서 데이터를 집어 넣는 쪽 파이썬 내장 자료구조 및 라이브러리 자료구조.ipynb Colaboratory notebook colab.research.google.com 이전 1 2 다음