2026/03/13 9

[정글 베이직 19] — 해시 테이블 · 성적 관리

📋 문제 소개문제 설명해시 테이블(딕셔너리)을 사용하여 학생 성적을 관리한다. Key-Value 쌍으로 빠른 검색, 삽입, 삭제가 가능하다. 파이썬의 dict는 내부적으로 해시 테이블로 구현되어 있다.INPUT학생 이름과 점수로 구성된 딕셔너리 studentsOUTPUT평균 점수, 최고 점수 학생 이름, 최고 점수 / 특정 학생 점수 조회예제입력students = {Alice:85, Bob:92, Charlie:78, David:95}출력평균: 87.5최고: David (95점)💡 힌트평균: sum(scores.values())/len(scores). 최고점: max(scores, key=scores.get).① 문제 이해항목내용문제딕셔너리로 학생 성적을 관리한다 (평균, 최고점, 조회).자료구조파이..

[정글 베이직 18] — 연결 리스트 (Linked List)

📋 문제 소개문제 설명단순 연결 리스트(Linked List)를 구현한다. 노드는 값(data)과 다음 노드를 가리키는 포인터(next)를 가진다.INPUT연결 리스트에 추가할 값들 (append 메서드 호출)OUTPUT연결 리스트의 모든 값 (리스트 형태로 반환)예제입력ll.append(1); ll.append(2); ll.append(3)출력[1, 2, 3]💡 힌트Node 클래스: data와 next 포인터. LinkedList 클래스: head 포인터. append()로 끝에 추가.① 문제 이해항목내용문제단순 연결 리스트를 구현한다 (append, print_list).구조Node(data, next) + LinkedList(head)예제1→2→3 append 후 [1,2,3] 반환② 핵심 아이..

[정글 베이직 17] — 우선순위 큐 · 응급실 관리

📋 문제 소개문제 설명우선순위 큐를 사용하여 환자를 우선순위에 따라 처리한다. 숫자가 작을수록 우선순위가 높다 (1 > 2 > 3).INPUT(이름, 우선순위) 튜플 리스트 patientsOUTPUT우선순위에 따라 처리된 환자 이름 리스트예제입력patients = [("김철수",3),("이영희",1),("박민수",2)]출력처리: 이영희 (우선순위: 1)처리: 박민수 (우선순위: 2)처리: 김철수 (우선순위: 3)💡 힌트heapq 모듈 사용. heappush()로 힙에 추가, heappop()으로 최솟값 제거.① 문제 이해항목내용문제환자를 우선순위(숫자 낮을수록 높음) 순으로 처리한다.자료구조최소 힙 (Min Heap) — heapq 모듈예제[("김철수",3),("이영희",1),("박민수",2)] → ..

[정글 베이직 16] — 큐 · 프린터 대기열

📋 문제 소개문제 설명큐(Queue)를 사용하여 프린터 작업을 입력 순서대로 처리한다. FIFO(First In First Out) 구조를 활용한다.INPUT인쇄 작업 리스트 jobs (예: ["문서A", "문서B", "문서C"])OUTPUT작업이 처리되는 순서 (리스트)예제입력jobs = ["문서A", "문서B", "문서C"]출력처리: 문서A처리: 문서B처리: 문서C💡 힌트파이썬에서 큐 구현 시 deque 사용. append()로 뒤에 추가, popleft()로 앞에서 제거.① 문제 이해항목내용문제프린터 작업을 입력 순서대로(FIFO) 처리한다.자료구조큐 (FIFO — First In First Out)예제["문서A","문서B","문서C"] → 순서대로 처리② 핵심 아이디어리스트로 큐를 구현하면 p..

[정글 베이직 15] — 스택 · 괄호 짝 맞추기

📋 문제 소개문제 설명스택(Stack)을 사용하여 괄호 문자열이 올바르게 짝지어져 있는지 확인한다. LIFO(Last In First Out) 구조를 활용한다.INPUT괄호 문자열 s (예: "(())", "(()", ")(")OUTPUT올바른 괄호면 True, 아니면 False예제입력s = "(())"출력True💡 힌트여는 괄호 '('는 스택에 push, 닫는 괄호 ')'를 만나면 pop. 마지막에 스택이 비어있으면 True.① 문제 이해항목내용문제괄호 문자열이 올바르게 짝지어졌는지 확인한다.자료구조스택 (LIFO — Last In First Out)예제"(())" → True, "(()" → False② 핵심 아이디어'(' 를 만나면 스택에 push, ')' 를 만나면 pop한다. 빈 스택에서 p..

[정글 베이직 14] — 머지 정렬 (Merge Sort)

📋 문제 소개문제 설명머지 정렬(Merge Sort) 알고리즘을 구현한다. 배열을 절반으로 나누고, 각각을 정렬한 후 두 포인터로 병합한다.INPUT정렬되지 않은 정수 배열 arrOUTPUT오름차순으로 정렬된 배열예제입력arr = [38, 27, 43, 3, 9, 82, 10]출력[3, 9, 10, 27, 38, 43, 82]💡 힌트배열을 절반으로 분할(재귀) → 각 부분 정렬 → 정렬된 두 부분을 병합.① 문제 이해항목내용문제머지 정렬로 배열을 오름차순 정렬한다.특징안정 정렬(Stable Sort), 항상 O(n log n) 보장예제[38,27,43,3,9,82,10] → [3,9,10,27,38,43,82]② 핵심 아이디어반으로 나누고 → 각각 재귀 정렬 → 두 정렬된 배열을 두 포인터로 병합한다..

[정글 베이직 13] — 퀵 정렬 (Quick Sort)

📋 문제 소개문제 설명퀵 정렬(Quick Sort) 알고리즘을 구현한다. 피벗(pivot)을 기준으로 작은 값과 큰 값을 분할하여 재귀적으로 정렬한다.INPUT정렬되지 않은 정수 배열 arrOUTPUT오름차순으로 정렬된 배열예제입력arr = [10, 7, 8, 9, 1, 5]출력[1, 5, 7, 8, 9, 10]💡 힌트피벗 선택(보통 마지막 원소). 피벗보다 작은 원소는 왼쪽, 큰 원소는 오른쪽으로 분할 후 재귀.① 문제 이해항목내용문제퀵 정렬로 배열을 오름차순 정렬한다.피벗 선택마지막 원소 arr[high]예제[10,7,8,9,1,5] → [1,5,7,8,9,10]② 핵심 아이디어피벗 기준으로 작은 값을 왼쪽, 큰 값을 오른쪽에 모은 뒤 피벗을 제자리에 놓는다. 그 다음 왼쪽과 오른쪽을 재귀적으로 ..

[정글 베이직 12] — 분할 정복 · 최댓값 찾기

📋 문제 소개문제 설명분할 정복(Divide and Conquer) 방식으로 배열의 최댓값을 찾는다. 배열을 반으로 나누고, 각 부분의 최댓값을 재귀적으로 구한 후 비교한다.INPUT정수 배열 arr, 시작 인덱스 left, 끝 인덱스 rightOUTPUT배열의 최댓값 (정수)예제입력arr = [3, 5, 1, 8, 2, 9, 4]left=0, right=6출력9💡 힌트Base case: left == right일 때 arr[left] 반환. 배열을 반으로 나눠 재귀 호출 후 max()로 비교.① 문제 이해항목내용문제분할 정복으로 배열의 최댓값을 구한다.입력정수 배열 arr, 시작 인덱스 left, 끝 인덱스 right예제[3,5,1,8,2,9,4] → 9② 핵심 아이디어Divide → Conquer..

[정글 베이직 11] — 이분 탐색 (Binary Search)

week 03 start#이분탐색#BinarySearch#탐색#크래프톤정글#베이직#3주차#Python📋 문제 소개문제 설명정렬된 배열에서 특정 값(target)을 찾아 해당 인덱스를 반환한다. 배열을 반으로 나누어 탐색 범위를 절반씩 줄이는 이분 탐색 알고리즘을 직접 구현한다.INPUT정렬된 정수 배열 arr, 찾을 값 targetOUTPUTtarget의 인덱스 (없으면 -1)예제입력arr = [1, 3, 5, 7, 9, 11, 13]target = 7출력3💡 힌트left, right 포인터와 mid = (left+right)//2 사용. arr[mid]와 target 비교해 범위 조정.① 문제 이해항목내용문제정렬된 배열에서 target 값의 인덱스를 반환. 없으면 -1.입력정렬된 정수 배열 arr,..