[
  {
    "courseSlug": "data-structures",
    "question": "코스에서 브라우저의 '뒤로가기' 버튼과 똑같은 방식으로 동작한다고 소개한 자료구조는 무엇인가요?",
    "option1": "큐 — 먼저 방문한 페이지부터 꺼낸다",
    "option2": "배열 — 방문한 순서대로 번호를 붙인다",
    "option3": "스택 — 나중에 쌓은 페이지부터 꺼낸다",
    "option4": "트리 — 페이지를 부모-자식으로 잇는다",
    "answerIndex": 2,
    "explanation": "스택은 접시 탑처럼 맨 위에 쌓고 맨 위부터 꺼내는 LIFO(Last In, First Out) 구조입니다. 코스 섹션 3에서 브라우저 뒤로가기, Ctrl+Z, 콜 스택을 모두 스택의 예로 들었습니다."
  },
  {
    "courseSlug": "data-structures",
    "question": "해시맵(Map)이 배열과 달리 값을 '한 번에' 찾을 수 있는 이유로 코스가 설명한 것은 무엇인가요?",
    "option1": "데이터를 항상 이름 순서로 정렬해 두기 때문에",
    "option2": "해시 함수가 열쇠(key)로 보관 위치를 바로 계산해 주기 때문에",
    "option3": "자주 찾는 값을 맨 앞 칸으로 미리 옮겨 두기 때문에",
    "option4": "같은 데이터를 여러 칸에 복사해서 나눠 담아 두기 때문에",
    "answerIndex": 1,
    "explanation": "섹션 4의 사물함 비유처럼, 해시 함수는 열쇠를 넣으면 보관 위치가 계산되어 나오는 기계입니다. 저장할 때와 찾을 때 같은 계산을 하므로 뒤지지 않고 바로 그 칸으로 직행합니다."
  },
  {
    "courseSlug": "data-structures",
    "question": "자바스크립트 배열로 스택과 큐를 흉내낼 때, 코스에서 설명한 메서드 조합을 바르게 짝지은 것은 무엇인가요?",
    "option1": "스택은 push와 shift, 큐는 push와 pop을 쓴다",
    "option2": "스택은 pop과 shift, 큐는 push와 at을 쓴다",
    "option3": "스택은 shift와 pop, 큐는 pop과 push를 쓴다",
    "option4": "스택은 push와 pop, 큐는 push와 shift를 쓴다",
    "answerIndex": 3,
    "explanation": "두 그릇 모두 넣을 때는 push로 같고, 꺼내는 쪽만 다릅니다. 스택은 뒤에서 꺼내는 pop(LIFO), 큐는 앞에서 꺼내는 shift(FIFO)를 쓴다고 섹션 3에서 정리했습니다."
  },
  {
    "courseSlug": "data-structures",
    "question": "코스의 시간복잡도 설명에 따르면, O(n²)인 코드에서 데이터가 10배로 늘어나면 해야 하는 일의 양은 대략 몇 배가 되나요?",
    "option1": "약 100배로 늘어난다",
    "option2": "약 10배로 늘어난다",
    "option3": "약 2배로 늘어난다",
    "option4": "거의 그대로 유지된다",
    "answerIndex": 0,
    "explanation": "섹션 6의 '반 전체 악수' 비유처럼 O(n²)는 데이터가 10배면 일은 100배가 됩니다(30명 약 450번, 300명 약 45,000번). 그래서 반복문 안의 반복문이 데이터가 커질 때 화면을 버벅이게 만듭니다."
  },
  {
    "courseSlug": "data-structures",
    "question": "학교 매점 프로그램을 만든다고 해 봅시다. 주문이 들어온 순서 그대로, 먼저 주문한 학생부터 빵을 받아야 합니다. 코스의 비유에 따르면 이 주문 목록에 가장 어울리는 그릇은 무엇인가요?",
    "option1": "스택 — 접시 탑처럼 최근 주문부터 처리한다",
    "option2": "해시맵 — 사물함처럼 학생 이름으로 바로 찾는다",
    "option3": "큐 — 급식 줄처럼 먼저 선 사람이 먼저 받는다",
    "option4": "트리 — 폴더처럼 주문을 종류별 가지로 나눈다",
    "answerIndex": 2,
    "explanation": "먼저 온 주문이 먼저 처리되어야 하므로 FIFO(First In, First Out)인 큐가 맞습니다. 코스 섹션 3에서 큐를 '새치기 없는 급식 줄'에 비유하며 프린터 대기열, 서버의 요청 처리 줄을 예로 들었습니다."
  }
]
