1. 시간 복잡도란?시간 복잡도란 알고리즘이 실행하는 데, 걸리는 시간을 입력크기에 대한 함수로 나타내는 것이다. 즉, 입력 크기가 증가할때 알고리즘의 실행 시간은 어떻게 변하는 지 분석하는 것이다. 빅오 표기법을 사용하여 최악의 경우를 기준으로 나타내는 것이 일반적이다. 1-1. 상수 시간 - O(1)입력 크기와 상관없이 항상 일정한 시간이 걸리는 경우예시) 배열의 첫 번째 요소를 출력하는 경우def get_first_element(arr): return arr[0] # 항상 한 번만 실행됨 → O(1) 1-2. 선형 시간 - O(N)입력 크기가 n이면 실행 횟수도 n번 증가하는 경우예시) 리스트의 모든 요소를 출력하는 경우def print_all_elements(arr): for ele..
Python
1. 함수의 재귀적 호출의 이해1-1. 재귀란?재귀는 어떤 함수가 자기 자신을 다시 호출하는 방식을 의미한다.쉽게 말해서, 어떤 문제를 해결 할 때, 작은 문제로 나누고, 그 작은 문제를 해결하는 방식이 동일하다면 재귀를 사용할 수 있다. 1-2. 재귀 함수의 기본 구조재귀 함수를 작성할 때, 두가지 중요한 요소가 있다.기본 조건무한히 자기 자신을 호출하면 안되니깐, 탈출 조건(종료 조건)이 필요하다.이 조건이 없으면 무한 루프에 빠져서 프로그램이 멈추지 않게 된다. 재귀 호출자기 자신을 호출하는 부분이 필요하다.이때, 문제의 크기를 점점 줄여서 기본 조건에 도달할 수 있도록 만들어야 한다. 1-3. 예제) 펙토리얼 함수팩토리얼은 자연수 n에 대해서 아래와 같이 정의할 수 있다.n != n x (n-1)..
내장 함수 사용binary - 이진수, decimal - 십진수# 이진수 -> 십진수binary = bin(decimal)# 십진수 -> 이진수binary = int('decimal', 2)[2:] # '0b' 접두사를 제거하고 이진수 문자열만 반환 내장 함수 미 사용# 십진수 -> 이진수def decimal_to_binary(num): res = "" while num > 0: res = str(num % 2) + res # 나머지를 앞에 추가 num = num // 2 # 2로 나눔 return res if res else "0" # 숫자가 0일 경우 "0" 반환# 이진수 -> 십진수def binary_to_decimal(binary_str): re..
문자열 처리 함수 정리함수설명Returnstring.title()각 단어의 첫글자를 대문자로 변환변환된 문자열string.upper()문자열의 모든 문자를 대문자로 변환변환된 문자열string.lower()문자열의 모든 문자를 소문자로 변환변환된 문자열string.isupper()문자열이 모두 대문자인지 확인True 또는 Falsestring.islower()문자열이 모두 소문자인지 확인True 또는 False 1. 각 단어의 첫 글자를 대문자로 변환: title()설명각 단어의 첫 글자를 대문자로 변환하고, 나머지는 소문자로 변환합니다.사용법string = "hello world"result = string.title()print(result) # 출력: Hello World주요 특징 단어는 공백, ..
Python heapq 모듈 정리heapq 모듈은 Python에서 힙(heap) 자료구조를 제공하며, 효율적으로 최소값을 추출하거나 우선순위 큐를 구현할 때 사용됩니다. 기본적으로 최소 힙(min-heap)을 지원합니다.1. 힙의 특징최소 힙: 루트(0번 인덱스) 노드가 항상 최솟값을 유지합니다.최대 힙은 기본적으로 제공되지 않으며, 음수 값을 이용해 구현할 수 있습니다.2. 주요 함수1) heapq.heappush(heap, item)힙에 새로운 요소를 추가합니다. 시간 복잡도는 O(log n)입니다.import heapqheap = []heapq.heappush(heap, 10)heapq.heappush(heap, 1)heapq.heappush(heap, 5)print(heap) # [1, 10, ..