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

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

코딩테스트에서 기본적인 문제를 해결하려면 자바스크립트 문법 중에서도 조금 더 실전적인 도구들을 다룰 줄 알아야 합니다.
레벨 2에서는 고차 함수, 객체/Set/Map 활용, 정렬과 정규식, 그리고 ES6 이상의 편의 문법들을 중심으로 정리합니다.


✅ 고차 함수 (map, filter, reduce)

  • map: 각 요소에 함수를 적용해 새로운 배열 생성

    [1, 4, 9].map(x => x * 2); // [2, 8, 18]
  • filter: 조건에 맞는 요소만 걸러냄

    [5, 12, 8].filter(x => x >= 10); // [12]
  • reduce: 모든 요소를 누적 계산

    [2, 4, 6].reduce((sum, num) => sum + num, 0); // 12

※ reduce 사용 시 빈 배열 체크 & 초기값 설정 주의


✅ 객체 탐색

  • for...in: 객체 키 순회 (hasOwnProperty로 확인 권장)

  • Object.entries(obj): 키-값 쌍 배열 반환

    for (const [k, v] of Object.entries(obj)) { ... }
  • Object.keys(obj) / Object.values(obj)


✅ Set / Map 활용

  • Set: 중복 제거, 값 존재 여부 체크 (O(1))

    const unique = [...new Set(arr)];
  • Map: 키-값 저장 (모든 타입 키 가능)

    const freq = new Map();
    for (const ch of "hello") {
    freq.set(ch, (freq.get(ch) || 0) + 1);
    }

✅ 정렬 (Array.sort)

  • 문자열 기반 정렬: arr.sort()

  • 숫자 정렬:

    arr.sort((a, b) => a - b); // 오름차순
  • 객체 정렬:

    people.sort((p, q) => p.age - q.age);
  • 문자열 정렬 (locale 고려):

    arr.sort((a, b) => a.localeCompare(b));

✅ 정규 표현식 (RegExp)

const onlyDigits = str.replace(/[0-9]/g, "");
const isNumeric = /^\d+$/.test(str);

메서드:

  • test(): 매칭 여부 확인
  • match(): 매칭된 내용 추출
  • replace(): 치환

✅ 스프레드 & 구조 분해 할당

  • 스프레드:

    const copy = [...arr];
    const merged = [...arr1, ...arr2];
    const max = Math.max(...arr);
  • 구조 분해:

    const [first, second] = arr;
    const {name, age} = person;
    const [head, ...tail] = [1,2,3]; // head=1, tail=[2,3]

✅ 기타 유용 메서드

  • arr.indexOf(value) / arr.includes(value)
  • arr.find(fn) / arr.findIndex(fn)
  • "str".startsWith(prefix) / "str".endsWith(suffix)

⚠️ JS 팁 (Level 2)

  1. 고차 함수 vs for 루프: 성능 미세하게 다를 수 있으나 대부분은 고차 함수로 작성해도 문제 없음.
  2. 객체 vs Map: 키 타입 다양하거나 많은 경우 Map이 안전하고 성능도 좋음.
  3. 얕은 복사 주의: {...obj}나 [...arr]는 얕은 복사. 중첩된 값은 별도 처리 필요.
  4. 정규식 활용: 간단한 문자열 검사는 정규식으로 짧게 가능. 단, 과한 패턴은 성능 문제 유발 가능.

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

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

JavaScript 코딩테스트 대비 정리 (레벨 5)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 4)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 3)  (1) 2025.08.04
JavaScript 코딩테스트 대비 정리 (레벨 1)  (1) 2025.08.04
'Language/JavaScript' 카테고리의 다른 글
  • JavaScript 코딩테스트 대비 정리 (레벨 5)
  • JavaScript 코딩테스트 대비 정리 (레벨 4)
  • JavaScript 코딩테스트 대비 정리 (레벨 3)
  • 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 코딩테스트 대비 정리 (레벨 2)
상단으로

티스토리툴바