정의
def add(a: int, b: int = 0) -> int:
return a + b
타입 힌트는 선택이며, 채점기는 보통 무시합니다. 읽기용으로 남기세요.
가변 기본값 함정
# 위험: 기본 list가 호출 간 공유됨
def bad(xs=[]):
xs.append(1)
return xs
# 안전
def good(xs=None):
if xs is None:
xs = []
xs.append(1)
return xs
*args / **kwargs
알고리즘 문제에서는 거의 필요 없습니다. 명시적 인자를 선호하세요.
순수에 가깝게
입력을 제자리 정렬·삭제하면 다음 테스트가 깨질 수 있습니다.
def good(arr):
return sorted(arr)
재귀
sys.setrecursionlimit을 올리는 것은 이 환경에서 권하지 않습니다.
깊은 재귀는 스택 시뮬레이션이나 반복으로 바꾸세요. 원리 트랙의 재귀 레슨을 보세요.
조기 반환
def solve(input: str) -> str:
s = input.strip()
if not s:
return '0'
# 본 로직
타입 힌트는 문서
def parse_pair(s: str) -> tuple[int, int]:
a, b = map(int, s.split())
return a, b
런타임에 강제되지 않습니다. 가독성용.
early return
def solve(input: str) -> str:
s = input.strip()
if not s:
return "0"
...
순수에 가깝게
인자 리스트를 .sort()로 직접 바꾸지 말고 sorted(xs)를 쓰세요.
채점 입력을 돌연변이하면 다음 케이스가 깨질 수 있습니다.