반응형
아래는 코딩 테스트에서 자주 등장하는 알고리즘을 Python 코드 예제와 함께 정리한 것이다.
📌 1️⃣ 자료구조 관련 예제
✅ 스택 (Stack)
stack = []
stack.append(1) # push
stack.append(2)
stack.pop() # pop
print(stack) # 출력: [1]
✅ 큐 (Queue)
from collections import deque
queue = deque()
queue.append(1)
queue.append(2)
queue.popleft() # pop
print(queue) # 출력: deque([2])
✅ 해시 (Hash) - 딕셔너리 활용
hash_map = {}
hash_map["apple"] = 3
print(hash_map["apple"]) # 출력: 3
📌 2️⃣ 정렬(Sorting) 알고리즘
✅ 퀵 정렬 (Quick Sort)
반응형
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
arr = [3, 6, 8, 10, 1, 2, 1]
print(quick_sort(arr)) # 출력: [1, 1, 2, 3, 6, 8, 10]
✅ 병합 정렬 (Merge Sort)
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
sorted_arr = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
sorted_arr.append(left[i])
i += 1
else:
sorted_arr.append(right[j])
j += 1
sorted_arr.extend(left[i:])
sorted_arr.extend(right[j:])
return sorted_arr
arr = [5, 3, 8, 6, 2, 7, 4, 1]
print(merge_sort(arr)) # 출력: [1, 2, 3, 4, 5, 6, 7, 8]
📌 3️⃣ 탐색(Search) 알고리즘
✅ 이진 탐색 (Binary Search)
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
arr = [1, 3, 5, 7, 9, 11]
print(binary_search(arr, 7)) # 출력: 3 (인덱스)
✅ DFS (깊이 우선 탐색)
def dfs(graph, node, visited):
visited.add(node)
print(node, end=' ')
for neighbor in graph[node]:
if neighbor not in visited:
dfs(graph, neighbor, visited)
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
visited = set()
dfs(graph, 'A', visited) # 출력: A B D E F C
✅ BFS (너비 우선 탐색)
from collections import deque
def bfs(graph, start):
queue = deque([start])
visited = set([start])
while queue:
node = queue.popleft()
print(node, end=' ')
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
bfs(graph, 'A') # 출력: A B C D E F
📌 4️⃣ 동적 계획법(DP) 예제
✅ 피보나치 수열 (Top-down DP - Memoization)
def fib(n, memo={}):
if n in memo:
return memo[n]
if n <= 2:
return 1
memo[n] = fib(n - 1, memo) + fib(n - 2, memo)
return memo[n]
print(fib(10)) # 출력: 55
✅ 배낭 문제 (Knapsack Problem)
def knapsack(weights, values, W, n):
if n == 0 or W == 0:
return 0
if weights[n-1] > W:
return knapsack(weights, values, W, n-1)
else:
return max(
values[n-1] + knapsack(weights, values, W - weights[n-1], n-1),
knapsack(weights, values, W, n-1)
)
weights = [2, 3, 4, 5]
values = [3, 4, 5, 6]
W = 5
print(knapsack(weights, values, W, len(weights))) # 출력: 7
📌 5️⃣ 최단 거리 알고리즘
✅ 다익스트라 (Dijkstra) 알고리즘
import heapq
def dijkstra(graph, start):
distances = {node: float('inf') for node in graph}
distances[start] = 0
pq = [(0, start)]
while pq:
current_distance, current_node = heapq.heappop(pq)
if current_distance > distances[current_node]:
continue
for neighbor, weight in graph[current_node].items():
distance = current_distance + weight
if distance < distances[neighbor]:
distances[neighbor] = distance
heapq.heappush(pq, (distance, neighbor))
return distances
graph = {
'A': {'B': 1, 'C': 4},
'B': {'A': 1, 'C': 2, 'D': 5},
'C': {'A': 4, 'B': 2, 'D': 1},
'D': {'B': 5, 'C': 1}
}
print(dijkstra(graph, 'A')) # 출력: {'A': 0, 'B': 1, 'C': 3, 'D': 4}
🔹 정리
- 자료구조: 스택, 큐, 해시, 트리, 그래프
- 정렬: 퀵 정렬, 병합 정렬
- 탐색: 이진 탐색, DFS, BFS
- DP: 피보나치, 배낭 문제
- 최단 거리: 다익스트라
위의 알고리즘과 코드를 연습하면 코딩 테스트에서 빠르고 정확하게 문제를 해결할 수 있다! 🚀
코딩 테스트 연습>
codeup)
CodeUp
☆ 파이썬 다운로드 : 파이썬3 ☆ 무료 C언어 IDE : Code::blocks DEV C++ ☆ 추천 온라인 IDE : C C++11 Python3 Java ☆ 채점 가능 언어 : C, C++, JAVA, Python 3.8, PyPy3 ★ C++로 제출시 void main()을 사
codeup.kr
백준)
프로그래머스)
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
반응형
'IT > SW Dev.' 카테고리의 다른 글
쉬운 AI Coding - EasyOCR(텍스트 추출) 패키지 및 Python 예제 (0) | 2025.02.19 |
---|---|
쉬운 AI Coding - streamlit 소개 및 python 예제 코드 (1) | 2025.02.17 |
쉬운 AI Coding - 공학용 계산기 코드 생성 예시(html, css, javscript, math.js) (1) | 2025.02.13 |
쉬운 AI Coding - 웨이퍼맵(wafermap) 코드 생성 예시(html, css, javascript) (0) | 2025.02.13 |
쉬운 AI Coding - Slack(incoming webhooks) 메세지 전송 Python 코드 작성 예시 (1) | 2025.02.13 |