반응형

알고리즘 20

이터레이터(Iterator) vs 제너레이터(Generator) - 파이썬 대용량 데이터 처리의 지름길

이터레이터(Iterator) vs 제너레이터(Generator) - 파이썬 대용량 데이터 처리의 지름길 파이썬에서 대용량 데이터를 다룰 때 메모리 관리가 중요한 이슈입니다. 전체 데이터를 한꺼번에 로드하면 메모리 부족 문제가 발생할 수 있습니다. 이럴 때 이터레이터와 제너레이터를 활용하면 효과적으로 메모리를 절약할 수 있습니다. 이터레이터(Iterator) 순회 가능한(iterable) 객체에서 데이터를 하나씩 꺼내는 객체입니다. next()를 호출해 다음 요소를 가져옵니다. 모든 요소를 소진하면 StopIteration 예외가 발생합니다. mylist = [1, 2, 3, 4, 5] iter_obj = iter(mylist) print(next(iter_obj)) # 1 print(next(iter_o..

코딩 테스트 대비! 파이썬으로 정렬 알고리즘 구현하기

파이썬으로 정렬 알고리즘 구현하기 문제 설명 다음 정렬 알고리즘들을 파이썬으로 구현하라. - 버블 정렬(Bubble Sort) - 선택 정렬(Selection Sort) - 삽입 정렬(Insertion Sort) 예시 입출력 입력 배열: [3, 1, 4, 2, 5] 버블 정렬 결과: [1, 2, 3, 4, 5] 선택 정렬 결과: [1, 2, 3, 4, 5] 삽입 정렬 결과: [1, 2, 3, 4, 5] 솔루션 코드 def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(n - i - 1): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr def sele..

코딩 테스트 대비! 파이썬으로 "LRU 캐시 구현" 문제 풀이

파이썬으로 "LRU 캐시 구현" 문제 풀이 문제 설명 LRU(Least Recently Used) 캐시 구조를 구현하는 클래스를 디자인하세요. 캐시는 다음 연산을 제공해야 합니다: - get(key): 키에 해당하는 값을 가져옵니다. 키가 존재하면 값을 반환하고, 그렇지 않으면 -1을 반환합니다. - put(key, value): 키와 값을 캐시에 삽입합니다. 캐시의 크기가 넘치면 가장 오랫동안 사용하지 않은 항목을 제거합니다. 예시 LRUCache lru = new LRUCache(2); // 크기 2의 LRU 캐시 생성 lru.put(1, 1); // 캐시: {1=1} lru.put(2, 2); // 캐시: {1=1, 2=2} lru.get(1); // 값 1 반환, 캐시: {2=2, 1=1} lru..

코딩 테스트 대비! 파이썬으로 "원형 데크(Circular Deque) 구현" 문제 풀이

파이썬으로 "원형 데크(Circular Deque) 구현" 문제 풀이 문제 설명 원형 데크(Circular Deque)를 디자인하는 클래스를 구현하세요. 원형 데크는 앞뒤로 양방향 삽입과 삭제가 가능한 자료구조입니다. 원형 데크는 다음 메서드를 제공해야 합니다: - MyCircularDeque(k): 크기가 k인 원형 데크를 생성합니다. - insertFront(value): 원형 데크의 앞에 값을 삽입합니다. 데크가 가득 차 있으면 false를 반환합니다. - insertLast(value): 원형 데크의 뒤에 값을 삽입합니다. 데크가 가득 차 있으면 false를 반환합니다. - deleteFront(): 원형 데크의 앞 값을 삭제하고, 삭제한 값을 반환합니다. 데크가 비어있으면 -1을 반환합니다. -..

코딩 테스트 대비! 파이썬으로 "이진 트리 반전" 문제 풀이

파이썬으로 "이진 트리 반전" 문제 풀이 문제 설명 이진 트리의 루트 노드가 주어졌을 때, 해당 트리를 반전(좌우 대칭)시키는 프로그램을 작성하세요. 예시 입력: root = [4,2,7,1,3,6,9] 출력: [4,7,2,9,6,3,1] 솔루션 코드 class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def invert_tree(root): if not root: return None # 좌우 자식 노드 반전 root.left, root.right = root.right, root.left # 재귀로 반전 진행 root.left = invert_t..

코딩 테스트 대비! 파이썬으로 "유효한 괄호" 문제 풀이

파이썬으로 "유효한 괄호" 문제 풀이 문제 설명 괄호로 구성된 문자열 s가 주어졌을 때, 괄호의 열림과 닫힘이 올바르게 되어있는지 확인하는 프로그램을 작성하세요. 제약 조건 - 1 true - s = "(]" -> false - s = "([)]" -> false 솔루션 코드 def is_valid(s): stack = [] mapping = {")":"(", "}":"{", "]":"["} for char in s: if char in mapping.values(): # 여는 괄호면 스택에 push stack.append(char) else: # 닫는 괄호면 if not stack: # 스택이 비어있다면 바로 false return False elif stack.pop() != mapping[char]..

반응형