시험일·하루 공부 시간으로 공부 계획표 짜기
시험일과 가용 시간만 주면 단원당 공부 시간이 쪽수에 비해 짧게 잡힙니다. 쪽당 시간 규칙을 넣어 CSV 로 받고, 날짜별 합계·요일·단원 누락을 스크립트로 검산합니다.
「시험 3주 남았고 평일 2시간, 주말 4시간. 계획표 짜 줘」 하면 그럴듯한 표가 나옵니다. 그 표대로 따라갈 수 있는지는 따로 확인해야 합니다.
[1] 조건을 파일로 둡니다. 단원과 쪽수는 직접 적습니다. OpenAI 의 시험 공부 시스템 사례 도 시험 범위를 지어내지 말고 불확실한 곳은 표시해 확인받으라고 합니다. 공부일은 10/24~11/13 21일(평일 15 + 주말 6), 총 3,240분입니다.
시험: 가상의 자격시험 (시험일 2026-11-14, 토요일)공부 시작일: 2026-10-24가용 시간: 평일 하루 120분, 토·일 하루 240분단원(쪽수): 1 기초 개념(30쪽) · 2 데이터 모델(45쪽) · 3 질의 처리(60쪽) · 4 동시성 제어(50쪽) · 5 복구(35쪽) · 6 보안(25쪽) · 7 성능 튜닝(55쪽) · 8 사례 연구(40쪽)약한 단원: 4 동시성 제어, 7 성능 튜닝</info>[2] 처음 프롬프트(head.ko.v1.txt)는 [5] 의 규칙에서 쪽당 시간·복습 길이·하루 최대 단원 수를 뺀 것입니다. 「처음 공부 한 번 이상, 이후 2~3일 간격 복습」이라고만 했고. 같은 방식으로 돌린 결과가 out.ko.v1.1.txt 입니다.
[3] 검산 스크립트입니다. 날짜별 합계가 0 초과·가용 시간 이하인지, 요일이 달력과 맞는지, 단원별 첫 학습 시간이 쪽수 × 3분인지 봅니다(PACE 줄. 0분이면 단원이 빠진 것). 처음에는 이 PACE 줄 없이 썼습니다.
import csv, sys, datetime as dtfrom collections import defaultdictS, E = dt.date(2026, 10, 24), dt.date(2026, 11, 14)W = "월화수목금토일"PG = {"1":30,"2":45,"3":60,"4":50,"5":35,"6":25,"7":55,"8":40}day, st, bad = defaultdict(int), defaultdict(int), 0for r in csv.DictReader(open(sys.argv[1], encoding="utf-8")): d = dt.date.fromisoformat(r["date"]); m = int(r["minutes"]) day[d] += m if r["type"] == "study": st[r["unit"].split()[0]] += m if r["weekday"] != W[d.weekday()]: print("WEEKDAY", d, r["weekday"], "!=", W[d.weekday()]); bad += 1for i in range((E - S).days): d = S + dt.timedelta(i); cap = 240 if d.weekday() > 4 else 120 if not 0 < day[d] <= cap: print("DAY ", d, W[d.weekday()], day[d], "/", cap); bad += 1for u, p in PG.items(): if st[u] != p * 3: print("PACE ", u, st[u], "!=", p * 3); bad += 1print(sum(day.values()), "min,", bad, "problems"); sys.exit(bad > 0)[4] PACE 줄을 뺀 스크립트로는 처음 결과 2회 모두 문제 0건이었습니다. 시간 초과도 요일 오류도 없었고, PACE 줄이 없으니 빠진 단원은 CSV 에서 따로 세어 봤는데 8개 단원 모두 첫 학습이 있었습니다. 그런데 날짜순으로 읽으면 첫 번째 결과는 단원을 하루 하나씩 10/24~10/31 에 놓고 단원당 40~90분만 줍니다. 8개 단원 340쪽의 첫 학습이 합계 520분, 쪽당 1.5분입니다. 두 번째는 10/24~10/26 사흘에 515분을 몰았습니다.
[5] 쪽당 시간을 넣습니다. 3분은 예시용이니 본인 속도로 바꾸세요. 고친 전체 프롬프트입니다.
아래 <info> 의 조건으로 시험 전까지의 공부 계획표를 만들어 주세요. 규칙:- 시작일부터 시험 전날까지 모든 날짜를 한 줄 이상 채웁니다. 시험일에는 배정하지 않습니다.- 하루 배정 시간 합은 그날의 가용 시간을 넘지 않게 합니다. 분 단위로 적습니다.- 8개 단원을 모두 처음 공부(type=study)로 넣습니다. 처음 공부 시간은 단원 쪽수 × 3분이며, 하루 가용 시간보다 길면 여러 날로 나눕니다. 처음 공부는 하루에 두 단원까지만 합니다.- 복습(type=review)은 처음 공부 후 2~3일 간격으로, 단원당 20분 안팎으로 넣습니다. 약한 단원은 복습을 더 자주 넣습니다.- 단원과 쪽수는 <info> 에 있는 것만 씁니다. 시험 범위나 단원을 새로 만들지 않습니다.- 요일은 달력 기준으로 월·화·수·목·금·토·일 한 글자로 적습니다.- 출력은 CSV 만. 첫 줄은 date,weekday,unit,type,minutes 이고, 코드 블록이나 다른 설명은 붙이지 않습니다. <info>$ cat head.ko.txt info.ko.txt | claude -p --model claude-sonnet-5-5 --max-turns 1 --tools "" --setting-sources "" --strict-mcp-config > out.ko.1.txt$ python3 -I check.py out.ko.1.txt; echo exit $?2000 min, 0 problemsexit 0$ python3 -I check.py out.ko.v1.1.txt | tail -2; echo exit ${PIPESTATUS[0]}PACE 8 60 != 1201970 min, 8 problemsexit 1고친 프롬프트로 두 번 돌린 결과는 모두 0건이고, 단원별 첫 학습이 정확히 쪽수 × 3분입니다. 배치는 둘이 달랐습니다. 단원 3 의 180분은 첫 번째에서 10/25(일), 두 번째에서 10/31(토)에 각각 하루로 들어갔습니다. 처음 프롬프트의 두 결과는 8개 단원 모두 PACE 에 걸립니다.
[6] 오류를 잡는지 봅니다. out.ko.1.txt 의 2행 요일을 일요일로, 3행 135분을 235분으로 손으로 바꾼 out-bad.txt 입니다(모델 오류 아님).
$ python3 -I check.py out-bad.txt; echo exit $?WEEKDAY 2026-10-24 일 != 토DAY 2026-10-24 토 325 / 240PACE 2 235 != 1352100 min, 3 problemsexit 1[7] 약한 단원(4·7)의 복습이 더 많은지, 시험 직전 이틀에 새 내용이 없는지는 스크립트가 못 봅니다. CSV 검증 일반은 표를 CSV 로 바꾸고 열 수 검증 에 있습니다.