[
  {
    "submission_no": "S-001",
    "learner_id": "L-1012",
    "task_id": "task-14",
    "passed_tests": 3,
    "total_tests": 10,
    "used_concepts": "리스트 컴프리헨션; 정렬",
    "error_type": "AssertionError",
    "elapsed_min": 42,
    "submitted_at": "2026-09-07",
    "code_text": "scores = [int(x) for x in raw.split(\",\")]\ntop = sorted(scores, reverse=True)\nprint(top[:3])\n"
  },
  {
    "submission_no": "S-002",
    "learner_id": "L-1027",
    "task_id": "task-12",
    "passed_tests": 9,
    "total_tests": 10,
    "used_concepts": "파일 입출력",
    "error_type": null,
    "elapsed_min": 46,
    "submitted_at": "2026-09-03",
    "code_text": "f = open(\"data.txt\")\nlines = f.readlines()\nf.close()\nprint(len(lines))\n"
  },
  {
    "submission_no": "S-003",
    "learner_id": "L-1043",
    "task_id": "task-09",
    "passed_tests": 4,
    "total_tests": 10,
    "used_concepts": "반복문; 예외 처리",
    "error_type": "TypeError",
    "elapsed_min": 22,
    "submitted_at": "2026-09-05",
    "code_text": "total = 0\nfor row in rows:\n    try:\n        total += int(row)\n    except ValueError:\n        total += 0\nprint(total)\n"
  },
  {
    "submission_no": "S-004",
    "learner_id": "L-1043",
    "task_id": "task-09",
    "passed_tests": 5,
    "total_tests": 10,
    "used_concepts": "반복문; 예외 처리",
    "error_type": "TypeError",
    "elapsed_min": 31,
    "submitted_at": "2026-09-06",
    "code_text": "total = 0\nfor row in rows:\n    try:\n        total = total + int(row)\n    except Exception:\n        pass\nprint(total)\n"
  },
  {
    "submission_no": "S-005",
    "learner_id": "L-1043",
    "task_id": "task-09",
    "passed_tests": 6,
    "total_tests": 10,
    "used_concepts": "반복문; 예외처리",
    "error_type": "TypeError",
    "elapsed_min": 78,
    "submitted_at": "2026-09-07",
    "code_text": "total = 0\nfor row in rows:\n    try:\n        total += int(row.strip())\n    except Exception:\n        continue\nprint(total)\n"
  },
  {
    "submission_no": "S-006",
    "learner_id": "L-1055",
    "task_id": "task-15",
    "passed_tests": 8,
    "total_tests": 10,
    "used_concepts": "정렬; 함수 정의; eval",
    "error_type": null,
    "elapsed_min": 39,
    "submitted_at": "2026-09-07",
    "code_text": "def rank(items):\n    return sorted(items, key=lambda x: -x)\n\ndata = eval(user_input)\nprint(rank(data))\n"
  },
  {
    "submission_no": "S-007",
    "learner_id": "L-1068",
    "task_id": "task-04",
    "passed_tests": 10,
    "total_tests": 10,
    "used_concepts": "변수; 조건문",
    "error_type": null,
    "elapsed_min": 21,
    "submitted_at": "2026-08-27",
    "code_text": "n = int(input())\nif n % 2 == 0:\n    print(\"even\")\nelse:\n    print(\"odd\")\n"
  },
  {
    "submission_no": "S-008",
    "learner_id": "L-1071",
    "task_id": "task-18",
    "passed_tests": 9,
    "total_tests": 10,
    "used_concepts": "클래스; 상속",
    "error_type": null,
    "elapsed_min": 58,
    "submitted_at": "2026-09-09",
    "code_text": "class Animal:\n    def speak(self):\n        return \"...\"\n\n\nclass Dog(Animal):\n    def speak(self):\n        return \"woof\"\n\n\nprint(Dog().speak())\n"
  },
  {
    "submission_no": "S-009",
    "learner_id": "L-1012",
    "task_id": "task-07",
    "passed_tests": 8,
    "total_tests": 10,
    "used_concepts": "조건문; 반복문",
    "error_type": null,
    "elapsed_min": null,
    "submitted_at": "2026-09-01",
    "code_text": "counts = 0\nfor ch in text:\n    if ch in \"aeiou\":\n        counts += 1\nprint(counts)\n"
  },
  {
    "submission_no": "S-010",
    "learner_id": "L-1027",
    "task_id": "task-25",
    "passed_tests": 6,
    "total_tests": 8,
    "used_concepts": "판다스 데이터프레임; 결측 처리",
    "error_type": null,
    "elapsed_min": 66,
    "submitted_at": "2026-09-08",
    "code_text": "import pandas as pd\n\ndf = pd.DataFrame(rows)\ndf = df.fillna(0)\nprint(df.describe())\n"
  },
  {
    "submission_no": "S-011",
    "learner_id": "L-1068",
    "task_id": "task-21",
    "passed_tests": 0,
    "total_tests": 10,
    "used_concepts": "예외 처리; 로깅",
    "error_type": "ImportError",
    "elapsed_min": 52,
    "submitted_at": "2026-09-08",
    "code_text": "import logging\nimport job_utils\n\nlogging.basicConfig(level=logging.INFO)\ntry:\n    job_utils.run()\nexcept Exception as e:\n    logging.error(e)\n"
  },
  {
    "submission_no": "S-012",
    "learner_id": "L-1071",
    "task_id": "task-30",
    "passed_tests": 9,
    "total_tests": 10,
    "used_concepts": "시각화; 집계",
    "error_type": null,
    "elapsed_min": 61,
    "submitted_at": "2026-09-08",
    "code_text": "import matplotlib.pyplot as plt\n\nsummary = df.groupby(\"dept\").size()\nsummary.plot(kind=\"bar\")\nplt.savefig(\"out.png\")\n"
  },
  {
    "submission_no": "S-013",
    "learner_id": "L-1055",
    "task_id": "task-12",
    "passed_tests": 9,
    "total_tests": 10,
    "used_concepts": "예외 처리; 파일 입출력",
    "code_text": "with open(\"input.txt\") as f:\n    lines = f.readlines()\ncounts = {}\nfor line in lines:\n    key = line.strip()\n    counts[key] = counts.get(key, 0) + 1\nprint(counts)\n",
    "error_type": null,
    "elapsed_min": 44,
    "submitted_at": "2026-09-03"
  }
]