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