Skip to content

πŸ”€ :: 문제 μ„€λͺ…, 풀이 νŽ˜μ΄μ§€ κ΅¬ν˜„ 및 μ—°κ²°#4

Open
jiwoo1222 wants to merge 5 commits into
developfrom
feature/home
Open

πŸ”€ :: 문제 μ„€λͺ…, 풀이 νŽ˜μ΄μ§€ κ΅¬ν˜„ 및 μ—°κ²°#4
jiwoo1222 wants to merge 5 commits into
developfrom
feature/home

Conversation

@jiwoo1222

Copy link
Copy Markdown
Contributor

πŸ“ƒ μž‘μ—…λ‚΄μš©

πŸ–₯️ λ¬Έμ œν’€μ΄ ν™”λ©΄ μ „ν™˜ 및 μƒνƒœ 관리 ꡬ쑰 κ΅¬ν˜„
ν™”λ©΄ λΆ„κΈ° μƒνƒœ(State) 섀계: ν™ˆ, 문제 상세 νŽ˜μ΄μ§€, μ½”λ“œ 에디터 νŽ˜μ΄μ§€ κ°„μ˜ 유기적인 흐름을 μ œμ–΄ν•˜κΈ° μœ„ν•΄ App.tsx에 solvingProblem(μ„ νƒν•œ 문제 데이터)κ³Ό isEditing(에디터 μ§„μž… μ—¬λΆ€) μƒνƒœλ₯Ό κ΅¬μΆ•ν–ˆμŠ΅λ‹ˆλ‹€.

쑰건뢀 λ Œλ”λ§ 트리 정립:

isEditingκ³Ό solvingProblem이 λͺ¨λ‘ ν™œμ„±ν™”λ˜λ©΄ ➑️ CodeEditorPage μ˜€ν”ˆ
문제만 μ„ νƒλœ μƒνƒœ(solvingProblem만 쑴재)λ©΄ ➑️ ProblemDetailPage μ˜€ν”ˆ

κ·Έ μ™Έ κΈ°λ³Έ μƒνƒœλ©΄ ➑️ 메인 μ›Œν¬μŠ€νŽ˜μ΄μŠ€(ν™ˆ/메뉴) λ…ΈμΆœ

ν”„λ‘­μŠ€(Props) 및 νƒ€μž… μΈν„°νŽ˜μ΄μŠ€ λ§€ν•‘: CodeEditorPage μ»΄ν¬λ„ŒνŠΈκ°€ λΆ€λͺ¨λ‘œλΆ€ν„° 문제 데이터(problem)와 μ΄νƒˆ ν•¨μˆ˜(onBack)λ₯Ό μ•ˆμ „ν•˜κ²Œ μ£Όμž…λ°›μ•„ λ™μ μœΌλ‘œ 화면을 그리도둝 TypeScript μΈν„°νŽ˜μ΄μŠ€(CodeEditorPageProps)λ₯Ό μ—°κ²°ν•˜κ³  컴파일 μ—λŸ¬λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ” ν…ŒμŠ€νŠΈ 방법

  1. 일반 ν™ˆ/메뉴 μƒνƒœ 확인
    방법: 상단 탑바 메뉴(문제, ν•™μŠ΅, λž­ν‚Ή λ“±)λ₯Ό 자유둭게 νƒ­ν•΄λ΄…λ‹ˆλ‹€.
    패슀 κΈ°μ€€: λ¬Έμ œν’€μ΄λ‚˜ 에디터 화면이 끼어듀지 μ•Šκ³  각 메뉴에 λ§žλŠ” ν™”λ©΄(SceneTitle)이 μ •μƒμ μœΌλ‘œ λ‚˜μ™€μ•Ό ν•©λ‹ˆλ‹€.

  2. 문제 상세 νŽ˜μ΄μ§€ μ§„μž… ν…ŒμŠ€νŠΈ
    방법: '문제' λ©”λ‰΄λ‚˜ ν™ˆ ν™”λ©΄μ—μ„œ λͺ©λ‘μ— μžˆλŠ” 아무 λ¬Έμ œλ‚˜ 선택해 [ν’€κΈ°] λ²„νŠΌμ„ λˆ„λ¦…λ‹ˆλ‹€.
    패슀 κΈ°μ€€: 메인 화면이 μˆ¨κ²¨μ§€λ©΄μ„œ λ‚΄κ°€ 방금 ν΄λ¦­ν•œ λ¬Έμ œκ°€ ProblemDetailPage에 μƒμ„Έν•˜κ²Œ λ‚˜νƒ€λ‚˜μ•Ό ν•©λ‹ˆλ‹€.
    (μƒμ„Έν•˜κ²Œ λ‚˜νƒ€λ‚˜λŠ” 건 아직 문제 좜제 aiλ₯Ό μ—°λ™ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— ν•œ 문제의 μ„€λͺ…μœΌλ‘œ λ‚˜νƒ€λ‚˜κ²Œλ” ν†΅μΌν•΄λ‘μ—ˆμŠ΅λ‹ˆλ‹€.)

  3. μ½”λ“œ 에디터 νŽ˜μ΄μ§€ μ§„μž… 및 데이터 연동 ν…ŒμŠ€νŠΈ (핡심)
    방법: 상세 νŽ˜μ΄μ§€ μ•ˆμ—μ„œ [풀이 μ‹œμž‘](ν˜Ήμ€ μ‹œμž‘ λ²„νŠΌ)을 λˆ„λ¦…λ‹ˆλ‹€.
    패슀 κΈ°μ€€: μ—λŸ¬ 없이 CodeEditorPage둜 μ¦‰μ‹œ 화면이 μ „ν™˜λ˜μ–΄μ•Ό ν•˜λ©°, 상단 헀더에 λ‚΄κ°€ κ³ λ₯Έ μ‹€μ œ 문제 제λͺ©(예: "1001번 A+B 풀이")κ³Ό λ‚œμ΄λ„ 정보가 λ™μ μœΌλ‘œ λ„μ›Œμ Έμ•Ό ν•©λ‹ˆλ‹€.

  4. 에디터 λ‚˜κ°€κΈ°(λ’€λ‘œκ°€κΈ°) 및 μƒνƒœ μ΄ˆκΈ°ν™” ν…ŒμŠ€νŠΈ
    방법: 에디터 ν™”λ©΄ μƒλ‹¨μ˜ ← λ‚˜κ°€κΈ° λ²„νŠΌμ„ λˆŒλŸ¬λ΄…λ‹ˆλ‹€. (상세 νŽ˜μ΄μ§€λ‚˜ λͺ©λ‘μœΌλ‘œ κ°€λŠ”μ§€ 확인)
    κ·Έ μƒνƒœμ—μ„œ 상단 νƒ‘λ°”μ˜ λ‹€λ₯Έ 메뉴(예: 'λž­ν‚Ή' λ˜λŠ” 'κ²Œμ‹œνŒ')λ₯Ό νƒ­ν•΄λ΄…λ‹ˆλ‹€.
    패슀 κΈ°μ€€: μ—λ””ν„°μ—μ„œ λ‚˜κ°€λ©΄ 이전 ν™”λ©΄μœΌλ‘œ νŠ•κ²¨μ•Ό ν•˜λ©°, λ‹€λ₯Έ 메뉴λ₯Ό νƒ­ν–ˆμ„ λ•ŒλŠ” isEditingκ³Ό solvingProblem μƒνƒœκ°€ λͺ¨λ‘ κΉ”λ”ν•˜κ²Œ λΉ„μ›Œμ Έμ„œ 에디터 μž”μƒμ΄ 남지 μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

πŸ–ΌοΈ μŠ€ν¬λ¦°μƒ·

image image

πŸ™‹ μ§ˆλ¬Έμ‚¬ν•­

  • ν™”λ©΄ λΆ„κΈ° 및 λ Œλ”λ§ 쑰건 처리: App.tsxμ—μ„œ isEditingκ³Ό solvingProblem 두 μƒνƒœκ°’μ˜ μ‘°ν•©μœΌλ‘œ ν™ˆ ➑️ 상세 ➑️ μ—λ””ν„°λ‘œ μ΄μ–΄μ§€λŠ” 3단계 ν™”λ©΄ μ „ν™˜μ„ μ²˜λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. 이 쑰건뢀 λ Œλ”λ§ ꡬ쑰가 λ³΅μž‘ν•˜κ±°λ‚˜ 가독성을 ν•΄μΉ˜μ§€ μ•ŠλŠ”μ§€ κ²€ν†  λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.

  • TypeScript νƒ€μž… 바인딩: CodeEditorPageκ°€ λ…λ¦½λœ νŽ˜μ΄μ§€ μ»΄ν¬λ„ŒνŠΈλ‘œμ„œ λΆ€λͺ¨μ˜ μƒνƒœλ₯Ό μ œμ–΄ν•  수 μžˆλ„λ‘ problem: ProblemItemκ³Ό onBack: () => void ν”„λ‘­μŠ€ νƒ€μž…μ„ λͺ…μ‹œν–ˆμŠ΅λ‹ˆλ‹€. μƒν˜Έ μ˜μ‘΄μ„±μ΄λ‚˜ νƒ€μž… μ§€μ • 방식에 κ°œμ„ ν•  점이 μžˆμ„μ§€ λ΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

  • λ„€λΉ„κ²Œμ΄μ…˜ 이동 μ‹œ μƒνƒœ μ΄ˆκΈ°ν™”: 상단 탑바 메뉴λ₯Ό 클릭해 λ‹€λ₯Έ λ©”λ‰΄λ‘œ μ™„μ „νžˆ μ΄νƒˆν•  λ•Œ setIsEditing(false)와 setSolvingProblem(null)을 톡해 κΈ°μ‘΄ 풀이 μƒνƒœλ₯Ό μ΄ˆκΈ°ν™”ν•˜λ„λ‘ handleNavClick에 λ°˜μ˜ν–ˆμŠ΅λ‹ˆλ‹€. 이 νλ¦„μ—μ„œ μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ‚˜ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ μš°λ €κ°€ μ—†λŠ”μ§€ 확인받고 μ‹ΆμŠ΅λ‹ˆλ‹€.

  • κ°œμ„ ν•  점, μ˜€νƒ€, μ½”λ“œμ— μ΄μƒν•œ 뢀뢄이 μžˆλ‹€λ©΄ Comment λ‹¬μ•„μ£Όμ„Έμš”.

βœ… 체크리슀트

  • μ½”λ“œκ°€ μ •μƒμ μœΌλ‘œ 컴파일되고 μ‹€ν–‰λ˜λŠ”μ§€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
  • λΆˆν•„μš”ν•œ μ½”λ“œκ°€ μ—†λŠ”μ§€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.
  • μ½”λ“œ μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό μ€€μˆ˜ν–ˆμŠ΅λ‹ˆλ‹€.
  • κΈ°μ‘΄ κΈ°λŠ₯이 μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

@jiwoo1222 jiwoo1222 self-assigned this Jul 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant