98. 고급 용어 보강

이 부록은 고급편에 등장한 고급 수준의 기술 용어를 한자리에 모아 풀이합니다. 본문 첫 등장 자리에서 이미 설명했지만, 헷갈릴 때 빠르게 찾아볼 수 있도록 정리했습니다.
📌 초급편의 98 기초 용어 사전(범용 용어)과 중급편의 98 중급 용어 보강(OOP·이터레이션 등)도 함께 참고하세요. 이 사전은 그 위층, 고급 개념을 다룹니다.

🔤 정규표현식과 텍스트

용어한 줄 풀이처음 등장
정규표현식(정규식)문자열 패턴을 기호로 표현하는 작은 언어.21장
메타문자\d·.·* 등 특수한 의미를 가진 문자.21장
문자 클래스[abc]·\d처럼 "어떤 종류의 문자"를 나타내는 표현.21장
수량자*·+·{n}처럼 반복 횟수를 지정하는 기호.21장
앵커^·$처럼 위치(시작·끝)를 지정하는 기호.21장
그룹괄호 ( )로 패턴 일부를 묶어 따로 추출하는 것.21장
탐욕/게으름수량자가 최대한 많이(탐욕)/최소한만(게으름, ?) 매칭.21장
raw 문자열r"...". 백슬래시를 그대로 전달하는 문자열.21장

📝 로깅

용어한 줄 풀이처음 등장
로깅(logging)중요도·시간을 붙여 체계적으로 기록하는 방식.22장
로그 레벨DEBUG<INFO<WARNING<ERROR<CRITICAL의 5단계 중요도.22장
핸들러(handler)로그를 어디로 보낼지 정하는 것(화면·파일).22장
포매터(formatter)로그를 어떤 형식으로 출력할지 정하는 것.22장
로거(logger)로그를 만드는 주체 객체(getLogger).22장

⏰ 시간

용어한 줄 풀이처음 등장
timedelta두 시점 사이의 간격(기간)을 나타내는 객체.23장
strftime / strptime날짜→문자열(만들기) / 문자열→날짜(파싱).23장
타임존(timezone)지역별 시간대. zoneinfo로 다룸.23장
UTC협정 세계시. 시간대 계산의 기준점.23장
perf_counter가장 정밀한 경과 시간 측정 함수.23장

⚡ 동시성

용어한 줄 풀이처음 등장
동시성(concurrency)여러 작업을 겹쳐 처리해 전체 시간을 줄이는 것.24장
I/O 바운드입출력 대기가 병목인 작업(네트워크·파일).24장
CPU 바운드계산 자체가 병목인 작업.24장
스레드(thread)한 프로그램 내 여러 실행 흐름. 메모리 공유.24장
프로세스(process)독립된 실행 단위. 메모리 분리. 진짜 병렬.24장
GIL한 번에 한 스레드만 Python 코드를 실행하게 하는 잠금.24장
경쟁 상태(race condition)여러 스레드가 공유 데이터를 동시에 바꿔 생기는 오류.24장
async/비동기한 흐름에서 작업을 전환하며 겹쳐 실행하는 방식.25장
코루틴(coroutine)async def로 만든, 멈췄다 재개 가능한 함수.25장
await비동기 작업이 끝나길 기다리는 키워드(이때 양보).25장
gather여러 코루틴을 동시 실행하는 함수.25장
이벤트 루프비동기 작업들을 전환하며 돌리는 실행 엔진.25장

🌲 자료구조와 알고리즘

용어한 줄 풀이처음 등장
시간 복잡도 / Big-O데이터가 커질 때 시간이 늘어나는 패턴. O(n) 등.26장
스택(stack)LIFO(후입선출). 마지막에 넣은 걸 먼저 꺼냄.26장
큐(queue)FIFO(선입선출). 먼저 넣은 걸 먼저 꺼냄.26장
deque양끝에서 O(1)로 넣고 빼는 양방향 큐.26장
이진 탐색(binary search)정렬된 데이터에서 절반씩 버리며 찾기. O(log n).26장
트리(tree)가지치며 뻗는 계층 자료구조.27장
노드/루트/리프트리의 점 / 맨 위 / 끝(자식 없는) 노드.27장
이진 트리자식이 최대 2개인 트리.27장
BST이진 탐색 트리. 왼쪽<자기≤오른쪽 규칙.27장
순회(traversal)트리의 모든 노드를 방문(전위·중위·후위).27장
재귀(recursion)함수가 자기 자신을 부르는 것.27장
defaultdict없는 키를 자동으로 기본값으로 만드는 딕셔너리.28장
@dataclass데이터 담는 클래스의 __init__을 자동 생성하는 데코레이터.28장

⚠️ 고급 단골 실수 모음

실수올바른 방법
정규식을 raw 문자열 없이 작성항상 r"..."
re.search 결과 바로 .group()if m:으로 None 확인 먼저
정규식으로 완벽한 이메일 검증 시도대략 검사만, 과욕 금지
print로 디버깅 후 배포로깅 + 레벨 설정으로
except에서 logging.errorlogging.exception(트레이스백 포함)
날짜를 문자열로 직접 계산datetime + timedelta에 맡기기
CPU 작업을 스레드로 병렬화GIL 때문에 무의미. 프로세스 사용
코루틴을 await 없이 호출await/gather/run 필요
async 안에서 time.sleepawait asyncio.sleep 사용
큐를 리스트 pop(0)deque.popleft (O(1))
잦은 포함 확인을 리스트로세트로 (O(n)→O(1))
정렬된 값을 BST에 순서대로 삽입한쪽으로 기욺(O(n)). 균형 트리·dict 사용
🏠 목차로 돌아가기 | ▶️ 99. 고급 치트시트와 다음 단계