JavaScript 코딩테스트 대비 정리 (레벨 3)

2025. 8. 4. 17:20·Language/JavaScript
728x90

레벨 3에서는 재귀 알고리즘과 자료구조를 직접 구현하거나 활용하는 문제가 등장합니다. 재귀 호출, 그래프 탐색, 큐/스택 구현, 이진 탐색과 같은 알고리즘 패턴을 자바스크립트로 다룰 수 있어야 합니다. 또한 문자열/배열 조작 기법과 일부 유용한 메서드의 심화 사용이 요구됩니다.


✅ 재귀 함수

재귀는 함수가 자기 자신을 호출하여 문제를 해결하는 기법입니다. 예를 들어 팩토리얼 계산이나 DFS 탐색을 재귀로 구현할 수 있습니다. 종료 조건(base case)을 명확히 해야 하며, 너무 깊은 재귀는 Maximum call stack size exceeded 오류가 발생할 수 있습니다.

function factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}

✅ DFS / BFS (깊이/너비 우선 탐색)

DFS

재귀 또는 스택으로 구현하며, 깊이 우선으로 탐색합니다.

function dfs(v, visited) {
  visited[v] = true;
  for (const next of graph[v]) {
    if (!visited[next]) dfs(next, visited);
  }
}

BFS

큐를 이용하여 너비 우선으로 탐색합니다.

function bfs(start) {
  const queue = [start];
  const visited = { [start]: true };
  while (queue.length) {
    const v = queue.shift();
    for (const next of graph[v]) {
      if (!visited[next]) {
        visited[next] = true;
        queue.push(next);
      }
    }
  }
}

✅ 큐와 스택 직접 구현

class Queue {
  constructor() {
    this.arr = [];
  }
  enqueue(x) { this.arr.push(x); }
  dequeue() { return this.arr.shift(); }
  isEmpty() { return this.arr.length === 0; }
}

✅ 이진 탐색 (Binary Search)

function binarySearch(arr, target) {
  let lo = 0, hi = arr.length - 1;
  while (lo <= hi) {
    const mid = Math.floor((lo + hi) / 2);
    if (arr[mid] === target) return mid;
    if (arr[mid] < target) lo = mid + 1;
    else hi = mid - 1;
  }
  return -1;
}

✅ 문자열/배열 변형 테크닉

  • 투 포인터
  • 슬라이딩 윈도우
  • 문자열 뒤집기: str.split('').reverse().join('')
  • 부분 치환: str.replaceAll("a", "b")
  • 배열 삽입/삭제: splice()

✅ 문자열 조작

  • 정규식 치환: str.replace(/[^a-z]/g, "")
  • 중복 문자 압축: (.)\1+
  • split with regex: str.split(/[\s,]+/)

✅ 배열 평탄화: flat

[1, [2, [3, 4]]].flat(2); // [1, 2, 3, 4]

✅ reduceRight

["a", "b", "c"].reduceRight((acc, x) => acc + x); // "cba"

✅ Object.entries & fromEntries

const count = { a: 3, b: 1 };
const sorted = Object.entries(count).sort((a, b) => b[1] - a[1]);

⚠️ JS 특유의 주의점

  • Number 정밀도, BigInt 필요 여부
  • 문자열 이터레이션 주의 (이모지 등)
  • 재귀 깊이 제한
  • 불변성 고려 (slice, spread 등으로 복사)

이상으로 레벨 3 중급 알고리즘 활용에서 자주 사용되는 JS 문법과 기법들을 정리했습니다. 문제 풀이에 반복적으로 등장하는 테크닉이므로 숙련도를 높여두면 유리합니다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'Language > JavaScript' 카테고리의 다른 글

JavaScript 코딩테스트 대비 정리 (레벨 5)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 4)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 2)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 1)  (1) 2025.08.04
'Language/JavaScript' 카테고리의 다른 글
  • JavaScript 코딩테스트 대비 정리 (레벨 5)
  • JavaScript 코딩테스트 대비 정리 (레벨 4)
  • JavaScript 코딩테스트 대비 정리 (레벨 2)
  • JavaScript 코딩테스트 대비 정리 (레벨 1)
Kun Woo Kim
Kun Woo Kim
안녕하세요, 김건우입니다! 웹과 앱 개발에 열정적인 전문가로, React, TypeScript, Next.js, Node.js, Express, Flutter 등을 활용한 프로젝트를 다룹니다. 제 블로그에서는 개발 여정, 기술 분석, 실용적 코딩 팁을 공유합니다. 창의적인 솔루션을 실제로 적용하는 과정의 통찰도 나눌 예정이니, 궁금한 점이나 상담은 언제든 환영합니다.
  • Kun Woo Kim
    WhiteMouseDev
    김건우
  • 깃허브
    포트폴리오
    velog
  • 전체
    오늘
    어제
  • 공지사항

    • [인사말] 이제 티스토리에서도 만나요! WhiteMouse⋯
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 분류 전체보기 (121) N
      • Frontend Development (51)
      • Backend Development (25)
      • Algorithm (33)
        • 백준 (11)
        • 프로그래머스 (17)
        • 알고리즘 (5)
      • Infra (1)
      • 자료구조 (3)
      • Language (5) N
        • JavaScript (5) N
  • 링크

    • Github
    • Portfolio
    • Velog
  • 인기 글

  • 태그

    frontend development
    tailwindcss
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kun Woo Kim
JavaScript 코딩테스트 대비 정리 (레벨 3)
상단으로

티스토리툴바