🧱 1️⃣ 기본 입출력
import sys
input = sys.stdin.readline # 빠른 입력
목적 문법 / 예시
| 한 줄 입력 | s = input().strip() |
| 공백 기준 여러 값 | a, b = map(int, input().split()) |
| 여러 줄 | data = [list(map(int, input().split())) for _ in range(n)] |
| 출력 | print(x) 혹은 print(*arr) |
🧮 2️⃣ 리스트 / 문자열 관련 핵심 메서드
분류 주요 메서드 설명 / 예시
| 정렬 | sorted(list) / list.sort() | 기본 오름차순 |
| sorted(list, reverse=True) | 내림차순 | |
| sorted(list, key=lambda x: x[1]) | 두 번째 원소 기준 | |
| 문자열 | "ABC".lower() / upper() | 대소문자 변환 |
| "a,b,c".split(',') / ' '.join(list) | 분할/합치기 | |
| "abcde"[::-1] | 문자열 뒤집기 | |
| 리스트 편의 | append, extend, insert, pop, remove, count, index, reverse | 자주 쓰임 |
| 리스트 컴프리헨션 | [x**2 for x in range(10) if x%2==0] | 한 줄 반복 생성 |
| 슬라이싱 | arr[1:4], arr[-1], arr[::-1] // 시작, 끝, 스텝 // 스텝의 '음수'는 역순 | 부분배열 추출 |
⚙️ 3️⃣ 내장 함수 (매우 자주 쓰임)
함수 설명 / 예시
| len(seq) | 길이 |
| sum(list) | 합 |
| max(list, key=...), min(...) | 최댓값/최솟값 |
| abs(x) | 절댓값 |
| map(func, iterable) | 요소별 함수 적용 |
| zip(a,b) | 두 리스트 병렬 묶기 |
| enumerate(list) | 인덱스와 값 함께 반복 |
| any(iterable) / all(iterable) | 참값 판정 |
| round(x, n) | 반올림 |
| divmod(a,b) | 몫·나머지 동시 반환 |
🔢 4️⃣ 자료구조 관련 메서드 (collections)
from collections import deque, Counter, defaultdict
구조 주요 메서드 예시
| deque (큐) | append, appendleft, popleft, pop | BFS, 회전 구현 |
| Counter (빈도수) | Counter(arr) / .most_common(n) | 빈도 계산 |
| defaultdict | defaultdict(list/int) | 자동 기본값 딕셔너리 |
🧩 5️⃣ 수학 / 순열 / 조합
import math, itertools
종류 메서드 설명
| math | math.gcd(a,b) / math.lcm(a,b) | 최대공약수 / 최소공배수 |
| math.ceil, math.floor, math.sqrt | 반올림·제곱근 | |
| itertools | itertools.permutations(arr, r) | 순열 |
| itertools.combinations(arr, r) | 조합 | |
| itertools.product(arr, repeat=n) | 중복 순열 | |
| itertools.accumulate(arr) | 누적합 |
🌊 6️⃣ 정렬 기준 커스터마이징 예시
arr = [(1, 3), (2, 1), (1, 2)]
arr.sort(key=lambda x: (x[0], -x[1]))
# (1, 3), (1, 2), (2, 1)
# 원소의 첫 번째 값을 기준, 그 다음 원소의 두 번째 값의 음수를 기준
🧠 8️⃣ 알고리즘에서 자주 쓰는 문법 패턴
상황 패턴
| BFS | while queue: x,y=queue.popleft() |
| DFS | 재귀 함수 def dfs(x): visited[x]=1; ... |
| DP | dp = [0]*(n+1) / 점화식 |
| 이진 탐색 | bisect_left(arr, x) / bisect_right(arr, x) |
| 조합 탐색 | for c in combinations(arr, k): ... |