RAG2026-5일40차시 · 발표와 정리14 / 16← 이전목차다음 →MetaContents

40차시. 발표와 정리

퀴즈 2 — README 빠진 항목 찾기

README 글 text 를 받아 "## " 로 시작하는 제목만 보고 빠진 항목을 찾는 check_readme(text) 를 완성해 보세요. 필수 6개(무엇을 하나, 성능, 구조, 설치와 실행, 주요 설정, 알려진 한계)와 권장 1개(다음에 할 것)를 나눠, 빠진 필수 목록과 빠진 권장 목록을 돌려주세요.

빈칸 코드에서 시작합니다.

Python
REQUIRED = {
    "무엇을 하나": "필수",
    "성능": "필수",
    "구조": "필수",
    "설치와 실행": "필수",
    "주요 설정": "필수",
    "알려진 한계": "필수",
    "다음에 할 것": "권장",
}

def check_readme(text):
    pass
결과 보기 (예시 풀이)
Python
# 3절 문서화 체크리스트로 README 의 빠진 항목을 찾습니다.
# README 의 "## " 제목만 보고, 정해 둔 말로 시작하는 제목이 있는지 확인합니다.

REQUIRED = {
    "무엇을 하나": "필수",
    "성능": "필수",
    "구조": "필수",
    "설치와 실행": "필수",
    "주요 설정": "필수",
    "알려진 한계": "필수",
    "다음에 할 것": "권장",
}

def check_readme(text):
    # "## 성능 (2026-08-06)" 처럼 뒤에 덧붙은 말이 있어도 되도록 앞부분만 견줍니다.
    heads = [line[3:].strip() for line in text.splitlines() if line.startswith("## ")]
    missing_must, missing_opt = [], []
    for key, level in REQUIRED.items():
        if not any(h.startswith(key) for h in heads):
            (missing_must if level == "필수" else missing_opt).append(key)
    return missing_must, missing_opt

def show(name, text):
    must, opt = check_readme(text)
    if not must:
        print(f"[{name}] 필수 항목 모두 있음" + (f" · 권장 빠짐 {opt}" if opt else ""))
    else:
        print(f"[{name}] 필수 빠짐 {must}" + (f" · 권장 빠짐 {opt}" if opt else ""))

# 예시 1: 수업 자료 README 의 제목들 → 모두 있어야 합니다.
full = """# 사내 인사규정 Q&A 시스템
## 무엇을 하나
## 성능 (2026-08-06)
## 구조
## 설치와 실행
## 주요 설정 (config.py)
## 알려진 한계
## 다음에 할 것
"""
show("완성본", full)

# 예시 2: 한계와 다음 계획을 뺀 README → 알려진 한계(필수)와 다음에 할 것(권장)이 빠졌다고 나와야 합니다.
draft = """# 내 RAG
## 무엇을 하나
## 성능
## 구조
## 설치와 실행
## 주요 설정
"""
show("초안", draft)

실행 결과

출력
[완성본] 필수 항목 모두 있음
[초안] 필수 빠짐 ['알려진 한계'] · 권장 빠짐 ['다음에 할 것']

채점 기준: "## 성능 (2026-08-06)" 처럼 뒤에 말이 붙은 제목도 찾고, 필수와 권장을 따로 돌려주면 정답입니다.

관련 교안: 40차시 「3. 문서화 체크리스트」

← 이전 절40차시 · 퀴즈 1 — Dev와 Holdout 차이 판정하기다음 절 →40차시 · 정리