Language/JavaScript

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

Kun Woo Kim 2025. 8. 4. 17:19
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