From dbe1a22a057e3c9775536e261fbb2773d510f8ad Mon Sep 17 00:00:00 2001 From: reloop Date: Mon, 20 Apr 2026 19:07:47 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20RELOOP-2026-MATH=20=ED=94=84=EB=A6=AC?= =?UTF-8?q?=EB=AF=B8=EC=97=84=20=EB=AC=B8=EC=A0=9C=EC=A7=91=20=EB=B3=B5?= =?UTF-8?q?=EA=B5=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit premium-high-math.ts 신규 생성 (고1-3 종합 20문제) PREMIUM_EBOOK_MAP/PREMIUM_CODES 복구 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/app/exams/sample-ebook/data/index.ts | 17 +- .../sample-ebook/data/premium-high-math.ts | 195 ++++++++++++++++++ 2 files changed, 210 insertions(+), 2 deletions(-) create mode 100644 frontend/src/app/exams/sample-ebook/data/premium-high-math.ts diff --git a/frontend/src/app/exams/sample-ebook/data/index.ts b/frontend/src/app/exams/sample-ebook/data/index.ts index 26b5286..8526860 100644 --- a/frontend/src/app/exams/sample-ebook/data/index.ts +++ b/frontend/src/app/exams/sample-ebook/data/index.ts @@ -1,4 +1,5 @@ import type { SampleProblem } from './types'; +import { PROBLEMS as PREMIUM_HIGH_MATH } from './premium-high-math'; import { PROBLEMS as M1_1 } from './m1-1'; import { PROBLEMS as M1_2 } from './m1-2'; import { PROBLEMS as M2_1 } from './m2-1'; @@ -126,6 +127,18 @@ export const EBOOK_LIST: EbookMeta[] = Object.values(EBOOK_MAP); // ─── 프리미엄 ebook (B2B 코드 입력 시에만 노출) ───────────────────────────── -export const PREMIUM_EBOOK_MAP: Record = {}; +export const PREMIUM_EBOOK_MAP: Record = { + 'premium-high-math': { + id: 'premium-high-math', + title: '고등 수학 완성 문제집', + grade: '고1-3', + subtitle: '공통수학 · 대수 · 미적분 · 확통 · 기하 종합', + problemCount: 20, + problems: PREMIUM_HIGH_MATH, + }, +}; -export const PREMIUM_CODES: Record = {}; +export const PREMIUM_CODES: Record = { + 'RELOOP-2026-MATH': 'premium-high-math', + 'DEMO-B2B-001': 'premium-high-math', +}; diff --git a/frontend/src/app/exams/sample-ebook/data/premium-high-math.ts b/frontend/src/app/exams/sample-ebook/data/premium-high-math.ts new file mode 100644 index 0000000..a4a2825 --- /dev/null +++ b/frontend/src/app/exams/sample-ebook/data/premium-high-math.ts @@ -0,0 +1,195 @@ +import type { SampleProblem } from './types'; + +export const PROBLEMS: SampleProblem[] = [ + // ── easy 1~5 : 복소수, 로그, 삼각함수, 등차수열, 집합 ───────────────────── + { + number: 1, + question: '복소수 (2 + 3i) − (5 − i) 를 a + bi 꼴로 나타내면? (i = √(−1))', + choices: ['−3 + 4i', '3 + 4i', '−3 − 4i', '3 − 4i', '−7 + 2i'], + answer: 1, + explanation: + '(2 + 3i) − (5 − i) = (2 − 5) + (3 − (−1))i = −3 + 4i 이다.', + difficulty: 'easy', + }, + { + number: 2, + question: 'log₂ 32 의 값은?', + choices: ['3', '4', '5', '6', '7'], + answer: 3, + explanation: + '2⁵ = 32 이므로 log₂ 32 = 5 이다.', + difficulty: 'easy', + }, + { + number: 3, + question: 'sin 30° + cos 60° 의 값은?', + choices: ['0', '1/2', '1', '√2/2', '√3/2'], + answer: 3, + explanation: + 'sin 30° = 1/2, cos 60° = 1/2 이므로 sin 30° + cos 60° = 1/2 + 1/2 = 1 이다.', + difficulty: 'easy', + }, + { + number: 4, + question: '등차수열 {aₙ}의 첫째항이 3, 공차가 4일 때 제10항은?', + choices: ['35', '37', '39', '41', '43'], + answer: 3, + explanation: + 'aₙ = a₁ + (n − 1)d = 3 + (10 − 1) × 4 = 3 + 36 = 39 이다.', + difficulty: 'easy', + }, + { + number: 5, + question: '전체집합 U = {1, 2, 3, 4, 5, 6}, A = {1, 2, 3}, B = {2, 3, 4} 일 때, A ∩ Bᶜ 의 원소의 개수는?', + choices: ['1', '2', '3', '4', '5'], + answer: 1, + explanation: + 'Bᶜ = {1, 5, 6} 이다. A ∩ Bᶜ = {1, 2, 3} ∩ {1, 5, 6} = {1} 이므로 원소의 개수는 1이다.', + difficulty: 'easy', + }, + + // ── medium 6~13 : 판별식, 나머지정리, 지수방정식, 접선, 정적분, 조건부확률, 수열의 합, 벡터 내적 ── + { + number: 6, + question: '이차방정식 x² + kx + k + 3 = 0 이 실근을 가지지 않기 위한 정수 k 의 최솟값은?', + choices: ['−1', '1', '3', '5', '7'], + answer: 2, + explanation: + '실근을 가지지 않으려면 판별식 D < 0. D = k² − 4(k + 3) = k² − 4k − 12 < 0. (k − 6)(k + 2) < 0 이므로 −2 < k < 6. 정수 k 의 최솟값은 −1 이다.', + difficulty: 'medium', + }, + { + number: 7, + question: '다항식 f(x) 를 (x − 1)(x + 2) 로 나눈 나머지가 2x + 1 일 때, f(1) + f(−2) 의 값은?', + choices: ['−3', '0', '3', '6', '9'], + answer: 3, + explanation: + '나머지정리에 의해 f(1) = 2(1) + 1 = 3, f(−2) = 2(−2) + 1 = −3. 따라서 f(1) + f(−2) = 3 + (−3) = 0 이다.', + difficulty: 'medium', + }, + { + number: 8, + question: '방정식 4ˣ − 6 · 2ˣ + 8 = 0 의 모든 실수 해의 합은?', + choices: ['1', '2', '3', '4', '5'], + answer: 3, + explanation: + '2ˣ = t (t > 0) 로 치환하면 t² − 6t + 8 = 0, (t − 2)(t − 4) = 0. t = 2이면 2ˣ = 2¹ → x = 1, t = 4이면 2ˣ = 2² → x = 2. 합 = 1 + 2 = 3 이다.', + difficulty: 'medium', + }, + { + number: 9, + question: '곡선 y = x³ − 3x + 1 위의 점 (1, −1) 에서의 접선의 기울기는?', + choices: ['−3', '−1', '0', '1', '3'], + answer: 3, + explanation: + "y' = 3x² − 3. x = 1 일 때 y' = 3(1)² − 3 = 0. 접선의 기울기는 0 이다.", + difficulty: 'medium', + }, + { + number: 10, + question: '∫₀² (3x² − 2x + 1) dx 의 값은?', + choices: ['4', '5', '6', '7', '8'], + answer: 3, + explanation: + '∫₀² (3x² − 2x + 1) dx = [x³ − x² + x]₀² = (8 − 4 + 2) − 0 = 6 이다.', + difficulty: 'medium', + }, + { + number: 11, + question: '두 사건 A, B에 대해 P(A) = 0.4, P(B) = 0.5, P(A ∩ B) = 0.2 일 때, P(A|B) 의 값은?', + choices: ['0.2', '0.4', '0.5', '0.6', '0.8'], + answer: 2, + explanation: + 'P(A|B) = P(A ∩ B) / P(B) = 0.2 / 0.5 = 0.4 이다.', + difficulty: 'medium', + }, + { + number: 12, + question: 'Σₖ₌₁¹⁰ (2k − 1) 의 값은?', + choices: ['90', '95', '100', '105', '110'], + answer: 3, + explanation: + 'Σₖ₌₁¹⁰ (2k − 1) = 1 + 3 + 5 + ⋯ + 19 (홀수 첫 10항의 합). 공식: n² = 10² = 100 이다.', + difficulty: 'medium', + }, + { + number: 13, + question: '벡터 a⃗ = (3, −1), b⃗ = (2, 4) 의 내적 a⃗ · b⃗ 의 값은?', + choices: ['−2', '0', '2', '4', '6'], + answer: 3, + explanation: + 'a⃗ · b⃗ = 3 × 2 + (−1) × 4 = 6 − 4 = 2 이다.', + difficulty: 'medium', + }, + + // ── hard 14~20 : 고차방정식, 삼각합성, 극대극소, 급수, 정적분(넓이), 이차곡선, 치환적분 ── + { + number: 14, + question: 'x⁴ − 5x² + 4 = 0 의 양의 실수 해의 개수는?', + choices: ['0', '1', '2', '3', '4'], + answer: 3, + explanation: + 'x² = t (t ≥ 0) 로 치환하면 t² − 5t + 4 = 0, (t − 1)(t − 4) = 0. t = 1이면 x = ±1, t = 4이면 x = ±2. 양의 실수 해는 x = 1, x = 2 로 2개이다.', + difficulty: 'hard', + }, + { + number: 15, + question: 'a sin x + b cos x = R sin(x + φ) 꼴로 변환할 때, 3 sin x + 4 cos x 의 최댓값은?', + choices: ['3', '4', '5', '6', '7'], + answer: 3, + explanation: + 'R = √(a² + b²) = √(9 + 16) = √25 = 5. 따라서 3 sin x + 4 cos x = 5 sin(x + φ) 이고 최댓값은 5 이다.', + difficulty: 'hard', + }, + { + number: 16, + question: '함수 f(x) = x³ − 3x² + 1 의 극댓값은?', + choices: ['−3', '−1', '0', '1', '3'], + answer: 4, + explanation: + "f'(x) = 3x² − 6x = 3x(x − 2) = 0. x = 0 일 때 극대, x = 2 일 때 극소. f(0) = 0 − 0 + 1 = 1. 극댓값은 1 이다.", + difficulty: 'hard', + }, + { + number: 17, + question: '급수 Σₙ₌₁∞ (1/(n(n+1))) 의 합은?', + choices: ['1/2', '2/3', '3/4', '1', '∞'], + answer: 4, + explanation: + '부분분수: 1/(n(n+1)) = 1/n − 1/(n+1). 부분합 Sₙ = 1 − 1/(n+1) → n→∞ 에서 1. 급수의 합은 1 이다.', + difficulty: 'hard', + }, + { + number: 18, + question: '두 곡선 y = x² 과 y = 2x 로 둘러싸인 도형의 넓이는?', + choices: ['1/3', '2/3', '1', '4/3', '2'], + answer: 4, + explanation: + '교점: x² = 2x → x = 0, 2. 넓이 = ∫₀² (2x − x²) dx = [x² − x³/3]₀² = 4 − 8/3 = 4/3 이다.', + difficulty: 'hard', + }, + { + number: 19, + question: '타원 x²/9 + y²/4 = 1 위의 점 (3cos θ, 2sin θ) 에서 θ = π/3 일 때 접선의 기울기는?', + choices: ['−√3/3', '−2√3/9', '−2/3', '−√3/6', '2√3/9'], + answer: 2, + explanation: + 'x = 3cos θ, y = 2sin θ 로 매개변수 표현. dx/dθ = −3sin θ, dy/dθ = 2cos θ. 기울기 = dy/dx = (2cos θ)/(−3sin θ). θ = π/3 일 때 cos(π/3) = 1/2, sin(π/3) = √3/2. 기울기 = (2 · 1/2) / (−3 · √3/2) = 1 / (−3√3/2) = −2/(3√3) = −2√3/9 이다.', + difficulty: 'hard', + }, + { + number: 20, + question: '∫ x√(x² + 1) dx 에서 u = x² + 1 로 치환할 때, 이 부정적분을 u로 나타내면?', + choices: [ + '(1/2)u^(3/2) + C', + '(1/3)u^(3/2) + C', + '(2/3)u^(3/2) + C', + 'u^(3/2) + C', + '(1/2)u^(1/2) + C', + ], + answer: 2, + explanation: + 'u = x² + 1 로 치환하면 du = 2x dx, 즉 x dx = du/2. ∫ x√(x² + 1) dx = ∫ √u · (du/2) = (1/2) ∫ u^(1/2) du = (1/2) · (2/3) u^(3/2) + C = (1/3)u^(3/2) + C 이다.', + difficulty: 'hard', + }, +];