문법 · Python · beginner

함수·기본인자·헬퍼 나누기

solve를 작은 함수로 쪼개고, 가변 기본값 함정을 피합니다.

배우기 · Python 문법 · 12분 · 5/9 · python · 함수

이 트랙 목차 (9)
  1. 1. 들여쓰기·타입·변수: Python 기초
  2. 2. 조건·반복: if, for, while, range
  3. 3. 리스트·슬라이스·문자열
  4. 4. 딕셔너리·집합·컴프리헨션
  5. 5. 함수·기본인자·헬퍼 나누기
  6. 6. 자주 쓰는 표준: collections 맛보기
  7. 7. 예외 기초: try · except · 입력 가드
  8. 8. itertools 맛보기: chain · product · combinations
  9. 9. 정렬 key: 커스텀 비교

정의

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)를 쓰세요.
채점 입력을 돌연변이하면 다음 케이스가 깨질 수 있습니다.

관련 짧은 원리

관련 문제