← 목록 · 04-1 · 답이 틀릴 수 있는 질문을 고른다 · 원문 script.md

04-1: 답이 틀릴 수 있는 질문을 고른다

rev3(건 2 FAIL 1 대응, 2026-09-06). 공통 조항 assets/contracts/COMMON.md(SPEC.lock v3). 계약 assets/contracts/04-1.md(rev2, 2026-09-06 10:15 정정 — 시연 ③을 두 재료(a)(b)로 분리, 새 키 04-1.인허가.행수·04-1.인허가.열수), assets/contracts/04-1-rev2.md(GA1~GA4) · assets/contracts/04-1-rev3.md(GA5). 소재 assets/market.md. 데이터 assets/data/daejeon/shops_2026-06_full.csv(열기만 — 행·열 수 확인, 집계 없음) · author-c/probe-dj/3b/data/license.csv(이름·행렬수만 언급, 열지 않음). 틀은 author-a/ep-04-5/(현행 규격, 읽기만). 04-2~04-5 승인 뒤 쓰는 과목 1차시 — 뒤 네 편이 「04-1에서 고른 질문」이라 부르는 질문을 여기서 고른다. 뒤 편의 숫자(순위·폐업률)는 이 편에서 말하지 않는다.

기본 정보

항목 내용
시간 25~30분 (발화 5,000~7,500자 + 시연 조작 시간 합산, §0.4·§0.4-a)
유형 시연
카테고리 04 AI 데이터 분석
선수 차시 없음(과목 1차시)
상태 rev3

학습 목표

구성

구간 활동 목적
도입 4 「질문 한 장」 틀 먼저 보여주기 + 과목이 남기는 것(다섯 편 지도) + 인물·소재 30초 + 도구 소개 오늘의 결과물을 먼저 확인, 과목 1차시라 도구를 소개
이론 6 답이 틀릴 수 있는 질문 — 세 조건. 다른 예 = 일기예보(확률 예보 vs "날씨가 좋을까"). 대전·자치구·인물 0회 어디서든 쓰는 일반형을 대전 없이 심는다
시연 13 ① AI에게 그대로 물어 일반론 답을 받는다 ② 질문을 좁힌다 ③ 원본을 열어 데이터가 있는지 확인(세지 않는다) ④ 질문 한 장을 채운다 ⑤ 함정: "이 질문 좋아?" ⑥ 저장, 전공이 드러나는 곳 대전 소재로 질문 고르는 과정을 보여준다, 뒤 편 숫자는 아직 말하지 않는다
정리 2 한 줄 + 다음 차시 갈고리 + 검정 질문 자막 연결

합계 25분(COMMON §0.1-a — 과목 1차시 4·6·13·2). 시연 구간의 무발화 조작 시간은 화면 지시에 단가표 유형(파일열기20·열고르기30·검사실행30·AI응답대기30·표작성20·없음0, 초)으로 표기한다 — 전환 비용 8초는 전환 칸에서만 센다.

연결


상세 전개

도입 (4분)

[화면: 「질문 한 장」 빈 틀 — 질문 문장 칸·어떤 숫자가 나오면 틀린 것인지 칸·답할 데이터 칸·분모 후보 칸, 전부 비어 있다(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 없음 · 전환: 예]

(축자)

"오늘 만드는 것은 답이 아니라 질문 한 장입니다."

(요점) 04 과목은 다섯 편이고, 오늘은 그 첫 편이다. 이 넉 장은 전부 이 한 장에서 시작한다. 질문을 고르고, 그 질문에 답할 데이터를 구하고 버리고, 나눌 기준을 정하고, 상식과 반대로 나오는 자리를 확인하고, 마지막에 하나를 고르고 그 한계를 적는다. 각 편은 앞 편이 만든 것을 그대로 이어받는다 — 질문 없이는 데이터를 구할 이유가 없고, 데이터 없이는 나눌 기준을 정할 수 없다. 오늘은 그 첫 걸음, 질문을 고르는 것이다. 이 질문 하나를 잘못 고르면 뒤 네 편이 아무리 정확하게 세어도 엉뚱한 답에 도달한다 — 그래서 오늘을 통째로 질문 하나에 쓴다.

(축자)

"이번 차시에서 정하는 것은 어떤 질문을 붙들고 갈 것인가입니다."

(요점, 인물·소재) 인물은 식품영양학과 졸업생이다. 대전에서 카페나 제과 계열 가게를 열고 싶어 하는데, 어느 구가 좋을지를 감이 아니라 데이터로 답하고 싶어 한다. 주변에서는 다들 "거기 요즘 뜬다더라" 정도로 말한다. 그런데 데이터로 답하기 전에, 먼저 물어야 할 것이 있다.

(요점, 도구 소개) 오늘부터 시연에 Antigravity라는 도구를 쓴다.

(축자, 지정)

"도구가 중요한 게 아니라, 이런 에이전트를 제대로 부리는 역량이 중요하다."

(요점) 막히면 나눠서 묻거나, 다른 도구로 바꾸거나, 텍스트로 정리해서 다시 넣는다. 대안은 오픈코드나 커서 CLI다. 오늘 시연에서 막히는 장면이 하나 나온다. 도구를 고르는 기준도 오늘 배우는 것과 닮았다 — 이 도구가 아니면 안 되는 이유를 대지 못한다면, 그 선택도 반증 불가능한 질문과 같은 자리에 있다.

이론 (6분)

(요점, 도입) 좋은 질문과 나쁜 질문을 가르는 기준이 있다. 셋 다 갖춰야 답이 틀릴 수 있는 질문이 된다.

(축자, 핵심 정의)

"어떤 숫자가 나오면 틀린 것인지 미리 적을 수 있고, 그 숫자를 낼 데이터가 실제로 있고, 분모가 정해지는 질문이 답이 틀릴 수 있는 질문입니다."

(요점) 세 조건은 어느 하나만 있어도 소용이 없다 — 셋이 다 있어야 질문이 데이터로 다룰 수 있는 형태가 된다. 첫째, 반증 가능해야 한다 — 어떤 결과가 나오면 「내 질문이 틀렸다」고 말할 수 있어야 한다. 틀릴 방법이 없는 질문은 맞을 방법도 없는 질문이다. 둘째, 그 숫자를 낼 데이터가 실제로 손에 있어야 한다 — 있으면 좋겠다는 데이터가 아니라 지금 열 수 있는 데이터다. 데이터가 없으면 질문이 아무리 훌륭해도 답을 낼 방법이 없다. 셋째, 분모가 정해져야 한다 — 무엇에 비해 많다거나 적다는 것인지가 있어야 숫자가 뜻을 가진다. 절대값만으로는 그 숫자가 큰 것인지 작은 것인지조차 알 수 없다.

(축자)

"무엇이 나와도 맞는 말이 되는 질문은 분석이 아닙니다."

(요점) "어디가 좋을까"가 그런 질문이다. 붐비는 곳을 답해도 맞고, 한산한 곳을 답해도 맞다. 어떤 답을 내놔도 반박할 수 없다면, 그 질문은 이미 데이터로 답할 수 있는 형태가 아니다. 다른 분야에서도 같은 함정이 있다 — "이 상품이 잘 팔릴까"도 마찬가지다. 팔리면 팔린 이유를, 안 팔리면 안 팔린 이유를 나중에 붙일 수 있어서, 결과가 무엇이든 질문을 낸 사람은 틀리지 않는다. 그래서 이런 질문은 분석의 시작점이 아니라 분석을 피하는 자리가 된다.

(축자, 다른 예)

"내일 비가 올 확률 칠십 퍼센트는 확인할 수 있고, 내일 날씨가 좋을까는 확인할 수 없습니다."

(요점) 확률 예보는 다음 날 비가 왔는지 안 왔는지로 맞았는지 확인할 수 있다. 반면 "날씨가 좋을까"는 사람마다 기준이 달라서 어떤 날씨가 와도 누군가는 맞다고, 누군가는 틀렸다고 말할 수 있다 — 확인할 방법 자체가 없다. 칠십 퍼센트라는 숫자에는 분모도 있다 — 같은 조건의 날이 백 번 있었다면 그중 일흔 번은 비가 왔다는 뜻이다. 분모가 없는 "좋을까"에는 비교할 기준 자체가 없다. 오늘 시연에서 이 두 종류의 질문을 실제로 만들어 보고, 하나를 다른 하나로 바꾸는 과정을 그대로 보여준다.

(요점) 세 조건은 순서대로 확인하는 체크리스트에 가깝다. 질문을 하나 떠올렸다면, 먼저 어떤 결과가 나오면 이 질문이 틀렸다고 할 수 있는지 스스로 답해 본다. 답이 안 나오면 첫 번째 조건에서 이미 걸린 것이다. 답이 나온다면, 그 결과를 실제로 낼 수 있는 데이터가 있는지 확인한다. 데이터가 있다면, 마지막으로 그 숫자를 무엇과 비교할 것인지를 정한다. 셋을 다 통과한 질문만 오늘 시연으로 넘어간다 — 하나라도 걸리면 그 자리에서 질문을 다시 쓴다.

시연 (13분)

[화면: AI 채팅창 — "대전에서 카페를 열면 어디가 좋을까?"라고 입력, 유동인구·대학가·상권을 나열하는 답변(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기 · 전환: 예]

(요점) 인물이 오늘 아침 에이전트에게 질문을 떠오른 그대로 던진다. "대전에서 카페를 열면 어디가 좋을까?"

(재구성 — AI 출력 예시)
유동인구가 많은 곳, 대학가 근처, 상권이 활발한 지역을 추천합니다.

(축자)

"이 답은 어떤 구를 짚어도 틀렸다고 말할 수 없습니다."

(요점) 유동인구가 많다는 것도, 상권이 활발하다는 것도 다섯 구 전부에 어느 정도씩은 해당한다. 이 답으로는 어느 구를 가리켜도 반박할 근거가 없다 — 질문 자체가 반증 가능하지 않았기 때문이다. 에이전트가 게으르게 답한 것이 아니다. 질문이 반증 불가능한 형태로 들어갔으니, 아무리 성실하게 답해도 반증 불가능한 답만 나올 수밖에 없다. 질문을 고치지 않고 답을 다듬어 봐야 같은 자리를 맴돈다. "더 구체적으로 알려 줘"라고 다시 물어도 마찬가지다 — 유동인구가 많은 동 이름 몇 개를 더 얹어 줄 뿐, 그 동이 왜 다른 동보다 나은지 반박할 기준은 여전히 없다. 인물은 여기서 멈춘다 — 답을 더 받아 내려 하지 않고, 질문 쪽으로 돌아간다.

[화면: 질문을 좁힌 문장이 화면에 뜬다 — "대전 다섯 구 가운데, 인구에 비해 음식 업소가 적고 새로 연 가게가 오래 버티는 구는 어디인가"(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]

(요점) 방금 답을 그대로 받아들이지 않고, 질문을 다시 쓴다. "대전 다섯 구 가운데, 인구에 비해 음식 업소가 적고 새로 연 가게가 오래 버티는 구는 어디인가."

(축자)

"다른 분모로 순위가 바뀌거나, 연도를 바꿔 결과가 뒤집히면 이 질문은 틀린 것입니다."

(요점) 이 질문은 답이 하나로 정해져 있지 않다 — 인구로 나누는지 세대로 나누는지에 따라 순위가 바뀔 수 있고, 어느 연도의 가게를 보는지에 따라 결과가 뒤집힐 수 있다. 그렇게 흔들릴 수 있다는 것 자체가 이 질문이 반증 가능하다는 증거다. "어디가 좋을까"와 비교하면 차이가 뚜렷하다 — 아까 질문은 무엇을 답해도 맞는 말이 됐지만, 이 질문은 실제로 데이터를 넣어 보기 전까지는 어느 구가 나올지 아무도 모른다. 모른다는 것, 그리고 나온 답이 다른 조건에서는 달라질 수 있다는 것이 좋은 질문의 표시다. 문장도 눈여겨볼 만하다 — "인구에 비해"라는 말 하나가 분모를 이미 예고하고 있고, "오래 버티는"이라는 말이 몇 년을 볼 것인지를 묻게 만든다. 질문을 다듬는 과정 자체가 나머지 두 조건을 준비하는 과정이다.

[화면: 원본 파일을 통째로 채팅창에 붙여 넣자 응답이 끊긴다 → 열 이름만 잘라 다시 넣자 응답이 이어진다(재구성 — 촬영 시 실제 화면으로 교체). · 조작: AI응답대기 · 전환: 예]

(요점, 막히는 장면) 원본 파일을 통째로 에이전트에게 붙여 넣으니 응답이 중간에 끊긴다. 한 번에 다 넣으려 하지 않고, 열 이름만 잘라서 다시 넣는다 — 그러자 응답이 이어진다.

(축자)

"막히면 통째로 넣지 않고 나눠서 넣습니다."

[화면: 대전 상가업소정보 원본 표가 열려 있다 — 80,704행, 39열, 열 이름 목록에 「시군구명」·「상권업종중분류명」이 보인다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 파일열기 · 전환: 예]

(요점) 질문에 답할 데이터가 실제로 있는지 확인한다 — 재료는 둘이다. 대전 상가업소정보 원본을 연다 — 80,704행, 39열이다. 열 이름만 훑는다. 「시군구명」이 있고 「상권업종중분류명」이 있다 — 구별로 나누고 음식 업종을 가릴 열이 이미 있다는 뜻이다. 이 파일에는 인허가일자나 폐업일자 같은 날짜 열이 없다. 오늘은 세지 않는다 — 정제하고 거르는 일은 다음 차시부터다.

(축자)

"지금은 열기만 합니다. 세는 것은 다음 차시부터입니다."

[화면: 인허가업소 정보 파일 이름만 화면에 뜬다 — 260,856행 × 17열, 인허가일자·폐업일자 열이 있다는 설명(재구성 — 촬영 시 실제 화면으로 교체). · 조작: 없음 · 전환: 예]

(요점) "새로 연 가게가 오래 버티는가"에 답할 재료는 다른 파일에 있다 — 인허가업소 정보, 260,856행 17열이다. 이 파일에 인허가일자와 폐업일자 열이 있다는 것만 여기서 짚는다. 오늘은 이 파일을 열지 않는다 — 실제로 여는 것은 4-4의 일이다.

[화면: 「질문 한 장」이 채워진다 — 질문 문장, 분모 후보(인구·세대·면적), 틀렸다면 어떻게 아나(분모를 바꾸면·연도를 바꾸면)(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]

(요점) 질문 한 장을 채운다. 분모 후보는 인구, 세대, 면적 셋을 적어 둔다 — 오늘은 고르지 않는다, 고르는 것은 다음 차시의 일이다. 셋 중 어느 것을 골라도 계산은 되지만, 결과가 똑같이 나온다는 보장은 없다 — 그래서 지금은 후보만 남겨 두고 넘어간다. 인구로 나누면 사는 사람 수에 비해 얼마나 있는지를 보는 것이고, 세대로 나누면 가구 수에 비해, 면적으로 나누면 땅 넓이에 비해 보는 것이다 — 셋은 서로 다른 질문에 가깝다. 틀렸다면 어떻게 아는지도 적는다 — 분모를 바꿨을 때 순위가 뒤집히거나, 연도를 바꿨을 때 결과가 달라지면 그때 이 질문이 틀렸다는 것을 알 수 있다. 이 칸이 비어 있으면 나중에 숫자가 나와도 그 숫자를 믿어야 할지 판단할 기준이 없다.

[화면: AI 채팅창 — "이 질문 좋아?"라고 묻자 어떤 질문에도 긍정적으로 답하는 장면(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기 · 전환: 예]

(요점, 함정) 방금 다듬은 질문을 그대로 들고 에이전트에게 "이 질문 좋아?"라고 물어본다.

(재구성 — AI 출력 예시)
좋은 질문입니다. 구체적이고 데이터 기반으로 접근하기 좋습니다.

(축자)

"질문을 좋다고 말하는 것은 에이전트가 아니라 세 조건입니다."

(요점) 아까 던진 "어디가 좋을까"에게 같은 질문을 해도 똑같이 긍정적으로 답했을 것이다. 에이전트는 질문의 형태를 평가하지 않는다 — 반증 가능한지, 데이터가 있는지, 분모가 정해졌는지는 사람이 직접 확인해야 한다. "구체적이고 데이터 기반"이라는 칭찬 자체도 반증 불가능한 문장이다 — 그 말이 맞는지 틀린지 확인할 방법이 없다. 질문을 검토하는 일을 에이전트에게 넘기면, 나쁜 질문도 좋다는 말과 함께 그대로 통과한다. 처음에 던진 "어디가 좋을까"를 다시 넣어 봐도 똑같이 칭찬했을 것이다 — 그 사실이 이 칭찬의 가치를 말해 준다. 오늘 만든 세 조건 체크리스트가 필요한 이유가 여기 있다 — 체크리스트는 사람이 직접 하나씩 짚어야 하는 일이고, 그 자리를 에이전트에게 넘기는 순간 반증 불가능한 질문도 그대로 통과된다.

[화면: 질문 한 장이 저장된 파일 목록에 추가된다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]

(요점) 완성한 질문 한 장을 저장한다. 이 파일이 앞으로 네 편 내내 붙들고 갈 질문이다. 파일 이름에 날짜를 남긴다 — 다음 차시를 시작할 때 오늘 만든 그 질문 그대로인지 다시 확인할 수 있어야 한다. 중간에 질문을 슬쩍 바꾸면, 나중에 나온 숫자가 처음 묻던 것과 다른 것에 답한 셈이 된다.

[화면: 상권업종중분류명 목록 중 「비알코올」과 「기타 간이」가 나란히 뜬다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]

(요점, 전공이 드러나는 곳) 「음식 업소」라는 말을 질문에 넣을 때 인물이 한 번 멈춘다. 카페와 제과점은 같은 「음식」 대분류 안에 있지만 중분류는 다르다.

(축자)

"카페와 제과점은 같은 음식 대분류 안에서도 다른 중분류라고 봅니다."

(요점) 이 구분은 다음 차시가 아니라 그 다음 차시에서 다시 만난다 — 오늘은 이름이 다르다는 것만 짚고 넘어간다. 분류표만 봐서는 왜 다른 칸에 있는지 알 수 없다 — 그 이유를 아는 것이 전공에서 나온다. "음식 업소"라고 뭉뚱그려 세면 카페와 제과점이 겪는 서로 다른 사정이 한 숫자 안에 섞여 버린다는 것도 지금 미리 짚어 둔다.

정리 (2분)

[화면: 도입에서 본 빈 틀에 질문 문장·분모 후보·데이터가 채워진 완성된 「질문 한 장」이 다시 뜬다(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 없음 · 전환: 예]

(축자, 지정)

"답이 틀릴 수 없는 질문은 질문이 아닙니다. 어떤 숫자가 나오면 틀린 것인지 먼저 적습니다."

(요점) 오늘 만든 질문 한 장에는 네 칸이 채워져 있다 — 질문 문장, 틀렸다면 어떻게 아는지, 답할 데이터, 분모 후보. 이 네 칸이 다 있어야 다음 차시부터 데이터를 실제로 다룰 수 있다. 넷 중 하나라도 비어 있으면, 데이터를 아무리 열심히 만져도 그 결과를 어디에 세워야 할지 알 수 없다. 네 칸을 다 채운 오늘의 질문 한 장이, 뒤 네 편이 각자의 자리에서 다시 펼쳐 볼 지도다. 오늘은 답을 하나도 내지 않았다 — 대신 앞으로 넉 편이 흔들리지 않을 자리를 하나 세웠다. 다음에 만날 때는 오늘 저장한 그 질문에서 그대로 다시 시작한다.

(축자, 갈고리)

"다음은 4-2 「데이터를 구하고, 버린다」입니다."

(요점) 오늘 고른 질문에 답할 데이터를 다음 차시부터 실제로 연다. 받은 표를 바로 셀 수는 없다 — 열어 보면 빈칸도 있고 같은 행이 두 번 들어 있기도 하다. 그걸 거르는 법을 다음 차시에서 배운다.

[자막: 여러분의 질문은 어떤 숫자가 나오면 틀린 것입니까?]


근거

원본 규모(재확인): assets/data/daejeon/shops_2026-06_full.csv80,704행 × 39열(2026-06). 계약 「숫자 출처」 표와 일치, 집필자가 wc -l·헤더 필드 수로 재확인. 이 파일에 인허가일자·개업일·폐업일 계열 열은 없다(헤더 39개 전수 확인) — GA3, script L106 근처의 오류를 정정한 근거.

인허가업소 정보(재확인, GA3·계약 rev2): author-c/probe-dj/3b/data/license.csv(CP949) — wc -l260,856행, 헤더 필드 수로 17열 확인 — 계약 「숫자 출처」 표(04-1.인허가.행수·04-1.인허가.열수)와 일치. 헤더에 인허가일자·폐업일자 열이 있다(04-4·04-5에서 이미 쓴 같은 파일). 이 편에서는 파일을 열지 않고 이름·행렬 수·열 존재만 화면 지시 한 줄로 언급한다 — 값은 4-4에서 다룬다.

전공 구간(비알코올·기타 간이): 상권업종중분류명 필드에서 카페는 「비알코올」, 제과점(빵/도넛)은 「기타 간이」로 서로 다른 중분류다 — author-a/ep-04-2/script.md 근거 절(04-2 전공 장면)과 같은 사실을 이 편에서는 이름만 먼저 짚는다. 04-2에서 정한 인허가 근거(카페=휴게음식점영업·빵/도넛=제과점영업)는 이 편에서 다시 설명하지 않는다.

뒤 편 숫자 미기재 확인: grep -n "596\|592\|537\|512\|509\|28\.4\|26\.7\|23\.5\|21\.7\|18\.2\|79,957" script.md — 0건. 04-3·04-4·04-5의 순위·폐업률·정제 후 행수를 이 편에서 언급하지 않았다.

대장 밖 사실: 0건.

자가측정(§0.4-a, 정본은 notes.md 검사 로그): 이 절에는 값을 다시 적지 않는다 — count_script.py 실행 결과와 화면 지시 태그 표(notes.md)가 유일한 근거다.