diff --git a/apps/frontend/app/(client)/(main)/problem/_components/MyProblem.tsx b/apps/frontend/app/(client)/(main)/problem/_components/MyProblem.tsx
new file mode 100644
index 0000000000..bc0d48529e
--- /dev/null
+++ b/apps/frontend/app/(client)/(main)/problem/_components/MyProblem.tsx
@@ -0,0 +1,95 @@
+'use client'
+
+import { Skeleton } from '@/components/shadcn/skeleton'
+import type { Problem } from '@/types/type'
+import { useSearchParams } from 'next/navigation'
+import { MyProblemDataTable } from './MyProblemDataTable'
+
+export interface MyProblemCardItem extends Problem {
+ state: 'Draft' | 'Ready' | 'Published'
+ timeLimit: number
+ memoryLimit: number
+ updatedAt: string
+}
+
+interface MyProblemProps {
+ forceEmpty?: boolean
+}
+
+const MOCK_MY_PROBLEMS: MyProblemCardItem[] = Array.from(
+ { length: 48 },
+ (_, index) => {
+ const id = 3000 + index + 1
+ const difficulty = `Level${(index % 5) + 1}` as Problem['difficulty']
+ const submissionCount = 24 + index * 7
+ const acceptedRate = ((index % 9) + 2) / 12
+ const states: MyProblemCardItem['state'][] = ['Published', 'Draft', 'Ready']
+
+ return {
+ id,
+ title: `글자 수 상관 없음. 단, 한 줄로만 노출되는 Mock My Problem ${index + 1}`,
+ difficulty,
+ submissionCount,
+ acceptedRate,
+ tags: [],
+ languages: ['C', 'Cpp', 'Java', 'Python3'],
+ hasPassed: null,
+ state: states[index % states.length],
+ timeLimit: 1000 + (index % 4) * 500,
+ memoryLimit: 128 + (index % 3) * 64,
+ updatedAt: `2024-01-${String((index % 24) + 1).padStart(2, '0')} 19:00`
+ }
+ }
+)
+
+export function MyProblem({ forceEmpty = false }: MyProblemProps) {
+ const searchParams = useSearchParams()
+ const search = searchParams.get('search') ?? ''
+ const normalizedSearch = search.trim().toLowerCase()
+
+ const filteredProblems = MOCK_MY_PROBLEMS.filter((problem) => {
+ if (!normalizedSearch) {
+ return true
+ }
+
+ return (
+ problem.title.toLowerCase().includes(normalizedSearch) ||
+ String(problem.id).includes(normalizedSearch)
+ )
+ })
+
+ const data = forceEmpty ? [] : filteredProblems
+
+ return
내가 만든 문제
++ {problem.title} +
+
+ 내가 만든 문제가
+
+ 존재하지 않습니다.
+
{total}