Python 8

[Python] Algorithm #04: 완전탐색과 백트래킹

이번 글에서는 완전탐색과 백트래킹을 함께 정리합니다. 완전탐색은 가능한 경우를 모두 확인하는 방법입니다.백트래킹은 그 중 의미 없는 경우를 중간에 잘라내며 탐색 효율을 높이는 방식입니다. 코딩테스트에서는 둘을 따로 쓰기도 하고, 함께 섞어서 쓰는 경우도 많습니다.1. 완전탐색이란완전탐색(Brute Force)은 가능한 모든 경우를 빠짐없이 확인하는 방법입니다.문제를 빠르게 푸는 핵심은 "모든 경우를 직접 만들어볼 수 있는가"를 판단하는 것입니다.경우의 수가 작으면 가장 확실한 방법입니다.조건이 복잡해도 일단 전부 검사하면 정답을 찾을 수 있습니다.대신 경우의 수가 너무 크면 시간 초과가 날 수 있습니다.예를 들어 숫자 3개를 골라 합을 구하거나, 문자열의 모든 부분집합을 확인하는 문제는 완전탐색으로 접근..

GDGoC/Python 2026.05.11

[Python] Basic #04: 딕셔너리 (Dictionary)

Python에서 핵심 자료구조 중 하나인 딕셔너리에 대해 다룹니다. 딕셔너리의 기초 문법부터 주요 메서드 및 기능까지 함께 살펴보겠습니다.1. 딕셔너리 (Dictionary)딕셔너리는 데이터를 Key-Value쌍으로 저장하며, 여러 값들을 효과적으로 관리할 수 있는 자료구조입니다. Key데이터를 식별할 수 있는 고유 값 ValueKey와 연결된 데이터 리스트 (List) vs 딕셔너리 (Dictionary) 딕셔너리 생성 및 기본 사용법# 딕셔너리 생성info = {"name": "Alice", "age": 25}# 값 접근print(info["name"]) # 출력: Alice# 값 수정info["age"] = 26print(info["age"]) # 출력: 26 2. 딕셔너리 주요 메서드 및 기능..

GDGoC/Python 2026.05.11

[Python] Algorithm #03: 이분 탐색 (Binary Search)

이번 글에서는 정렬을 간단히 짚고, 이분 탐색을 중심으로 다룹니다. 정렬은 이분 탐색을 위한 전제 조건이 되는 경우가 많습니다.그래서 정렬 자체는 짧게 보고, 이분 탐색의 원리와 활용에 더 집중해보겠습니다. 정렬에 대한 세부적인 내용은 기초 트랙을 참고하시면 되겠습니다.[Python] Basic #03: 정렬 [Python] Basic #03: 정렬Python에서 정렬을 다루는 방법을 다룹니다. 리스트를 정렬할 때 자주 사용하는 sort()와 sorted(), 정렬 기준을 바꾸는 key, 간단한 함수를 만드는 lambda, 그리고 역순 정렬까지 함께 살펴보겠습니다.1.opal1031.tistory.com1. 정렬은 왜 필요한가이분 탐색은 정렬된 데이터에서만 제대로 사용할 수 있습니다.데이터가 정렬되어 있..

GDGoC/Python 2026.05.06

[Python] Basic #03: 정렬

Python에서 정렬을 다루는 방법을 다룹니다. 리스트를 정렬할 때 자주 사용하는 sort()와 sorted(), 정렬 기준을 바꾸는 key, 간단한 함수를 만드는 lambda, 그리고 역순 정렬까지 함께 살펴보겠습니다.1. sort()와 sorted()sort()와 sorted()는 모두 데이터를 정렬할 때 사용합니다. sort()리스트 자체를 직접 정렬nums = [5, 2, 9, 1, 3]nums.sort()print(nums) # [1, 2, 3, 5, 9]list형의 method 중 하나이므로 list.sort()의 형태로 작성한다. sorted()정렬된 새로운 리스트를 반환nums = [5, 2, 9, 1, 3]result = sorted(nums)print(result) # [1, 2, ..

GDGoC/Python 2026.05.06

[Python] Algorithm #02: 문자열

문자열 탐색, 패턴 매칭, 아나그램, 회문, 투 포인터 등 문자열을 다루는 다양한 알고리즘을 정리했습니다.1. 문자열 탐색문자열에서 특정 문자나 패턴을 찾는 기본적인 방법입니다. 파이썬에서는 find(), in 연산자, index() 등을 활용할 수 있습니다.실제 문제에서는 여러 번 등장하는 경우 모든 위치를 찾거나, 부분 문자열의 개수를 세는 등으로 확장할 수 있습니다.s = "hello world"print(s.find("world")) # 6 (찾으면 시작 인덱스, 없으면 -1)print("wor" in s) # True (포함 여부)# 여러 번 등장하는 모든 위치 찾기target = "l"positions = [i for i, c in enumerate(s) if (c == targe..

GDGoC/Python 2026.04.25

[Python] Basic #02: 리스트와 문자열 활용

Python에서 리스트와 문자열을 활용하는 방법을 다룹니다. 리스트와 문자열을 다루는 기본 함수와 테크닉(join, 리스트 컴프리헨션, find, count 등)을 정리했습니다.1. join()의 활용리스트의 각 요소를 특정 구분자로 연결해 하나의 문자열로 만듭니다. 문자열 리스트를 출력할 때, 파일 저장 등에서 자주 활용됩니다.fruits = ['apple', 'banana', 'orange']result = ",".join(fruits)print(result) # apple,banana,orange2. 리스트 컴프리헨션(List Comprehension)리스트를 간결하게 생성할 수 있는 파이썬만의 문법입니다. 조건문, 함수 적용 등 다양한 변형이 가능합니다.# 1부터 5까지 제곱값 리스트 만들기sq..

GDGoC/Python 2026.04.25

[Python] Algorithm #01: 자료구조

Python에서 자주 사용하는 기본 자료구조인 해시, 스택, 큐, 덱, 힙의 특징과 사용법을 정리했습니다.각 자료구조의 개념, Python에서의 구현 방법, 그리고 간단한 예시 코드를 다룹니다.1. 해시 (Hash, 딕셔너리)해시(Hash)키-값 쌍으로 데이터를 저장하는 자료구조입니다.Python에서는 dict 타입으로 구현되어 있습니다. 시간복잡도삽입: 평균 O(1), 최악 O(n)삭제: 평균 O(1), 최악 O(n)탐색: 평균 O(1), 최악 O(n)d = {'apple': 3, 'banana': 5}print(d['apple']) # 3d['orange'] = 7 # 값 추가for key, value in d.items(): print(key, value)2. 스택 (Stack)스택(Sta..

GDGoC/Python 2026.04.25

[Python] Basic #01: 입출력 고급

Python에서 입출력(I/O)을 더 빠르고 효율적으로 처리하는 방법을 다룹니다.대용량 데이터 처리에 유용한 sys.stdin, sys.stdout 사용법, 입력 속도 개선, EOFError 처리, 여러 줄 입력 처리(map, split 활용)까지 정리했습니다.1. sys 모듈과 빠른 입출력sys 모듈파이썬 표준 라이브러리로, 표준 입출력(키보드 입력, 화면 출력) 등 다양한 시스템 관련 기능을 제공합니다.대용량 데이터 처리나 입력 속도 개선이 필요할 때 자주 사용합니다.기본적으로 input() 함수는 느릴 수 있습니다. 많은 데이터를 입력받을 때는 sys.stdin.readline()을 사용하는 것이 훨씬 빠릅니다.출력도 마찬가지로, print() 대신 sys.stdout.write()를 사용하면 속도..

GDGoC/Python 2026.04.25