RAG2026-5일38차시 · 미니프로젝트 ① 주제 선정과 설계14 / 17← 이전목차다음 →MetaContents

38차시. 미니프로젝트 ① 주제 선정과 설계

퀴즈 1 — 문서 사전 점검 합격 판정하기

페이지별 글자 목록 pages 를 받아 페이지 수, 페이지 평균 글자 수, 빈 페이지(공백을 빼고 50자 미만) 번호를 구하는 check_document(pages) 를 완성해 보세요. 3-1절 합격 기준(페이지 20~100, 평균 500자 이상, 빈 페이지 10% 미만)을 모두 지키면 ok 를 True 로, 걸린 기준은 problems 목록에 적어 딕셔너리로 돌려주세요.

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

Python
def check_document(pages):
    # pages: 쪽마다의 글자 목록
    pass
결과 보기 (예시 풀이)
Python
# 3-1절 문서 사전 점검을 표준 라이브러리만으로 흉내 냅니다.
# pages 는 PDF 한 쪽마다의 글자(문자열) 목록입니다. PyPDFLoader 의 page_content 자리라고 보시면 됩니다.

def check_document(pages):
    # 페이지 수와 전체 글자 수, 페이지 평균을 구합니다.
    n = len(pages)
    total = sum(len(p) for p in pages)
    avg = total // n if n else 0

    # 공백을 뺀 글자가 50자 미만이면 빈 페이지로 봅니다. 스캔본 PDF 는 이런 쪽이 많습니다.
    empty = [i for i, p in enumerate(pages) if len(p.strip()) < 50]

    # 합격 기준 세 가지를 하나씩 보고, 걸린 것만 problems 에 적습니다.
    problems = []
    if not 20 <= n <= 100:
        problems.append(f"페이지 수 {n} (20~100 이어야 함)")
    if avg < 500:
        problems.append(f"페이지 평균 {avg}자 (500자 이상이어야 함)")
    if n and len(empty) / n >= 0.1:
        problems.append(f"빈 페이지 {len(empty)}개 (10% 미만이어야 함)")

    return {"pages": n, "avg": avg, "empty": empty[:10],
            "ok": not problems, "problems": problems}

def show(name, pages):
    r = check_document(pages)
    print(f"[{name}] 페이지 {r['pages']} · 평균 {r['avg']}자 · 빈 페이지 {r['empty']}")
    print("   합격" if r["ok"] else "   다른 문서로 바꾸세요: " + " / ".join(r["problems"]))

# 예시 1: 42쪽, 쪽마다 900자 안팎인 규정집 → 세 기준을 모두 통과해야 합니다.
good = ["제1조 목적 ... " + "가" * 900 for _ in range(42)]
show("규정집", good)

# 예시 2: 30쪽 중 10쪽에서 글자가 거의 안 나오는 스캔본 → 빈 페이지 기준에 걸려야 합니다.
scanned = ["본문 " + "나" * 700] * 20 + ["  "] * 10
show("스캔본", scanned)

# 예시 3: 8쪽짜리 짧은 안내문 → 페이지 수 기준에 걸려야 합니다.
short = ["안내 " + "다" * 600] * 8
show("안내문", short)

실행 결과

출력
[규정집] 페이지 42 · 평균 911자 · 빈 페이지 []
   합격
[스캔본] 페이지 30 · 평균 469자 · 빈 페이지 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
   다른 문서로 바꾸세요: 페이지 평균 469자 (500자 이상이어야 함) / 빈 페이지 10개 (10% 미만이어야 함)
[안내문] 페이지 8 · 평균 603자 · 빈 페이지 []
   다른 문서로 바꾸세요: 페이지 수 8 (20~100 이어야 함)

채점 기준: 세 기준을 각각 검사하고, 규정집은 합격, 스캔본은 빈 페이지, 안내문은 페이지 수에서 걸리면 정답입니다.

관련 교안: 38차시 「3. 피해야 할 주제」 › 3-1) 문서 사전 점검 (5분)

← 이전 절38차시 · 실습 1 — 미니프로젝트 ① 주제 선정과 설계 실습 따라 하기다음 절 →38차시 · 퀴즈 2 — Definition of Done 판정하기