제목
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- *JavaScript 개발자 (중급 이상)**
- 배열 구조와 알고리즘 문제 해결 능력 향상에 도움
- 인터뷰 준비 및 코딩 테스트 연습에 적합
핵심 요약
- 유효한 산 배열(Valid Mountain Array)은 단일 피크가 있고, 피크 전에는 엄격히 증가, 피크 후에는 엄격히 감소하는 배열을 의미
- 두 포인터 기법(two-pointer technique)을 사용하여 증가/감소 경로를 검증
- 경계 조건(edge case) 처리: 배열 길이가 3 미만, 피크 없음, 증가/감소 전환 불가 등
섹션별 세부 요약
섹션 1: 문제 정의 및 조건
- 유효한 산 배열은 배열이 하나의 피크를 중심으로 증가 후 감소하는 구조를 가져야 함
- 피크는 배열의 중간에 위치해야 하며, 증가/감소 단계는 엄격히 이루어져야 함
- 예:
[1, 2, 3, 2, 1]
은 유효,[1, 2, 2, 1]
은 유효하지 않음
섹션 2: 알고리즘 접근
- 두 포인터 기법을 사용하여 배열의 시작과 끝에서 동시에 탐색
- 증가 단계:
i < j
일 때arr[i] < arr[i+1]
조건 유지 - 감소 단계:
i > j
일 때arr[i] > arr[i+1]
조건 유지 - 피크 위치 검증:
i
와j
가 동일한 지점에서 피크가 있는지 확인
섹션 3: 예외 처리
- 배열 길이가 3 미만인 경우:
return false
- 증가/감소 단계 중 조건이 깨질 경우:
return false
- 피크가 없거나, 증가 후 감소 전환 없음:
return false
결론
- 유효한 산 배열 검증은 두 포인터 기법과 경계 조건 처리를 통해 구현
- 배열의 증가/감소 패턴을 정확히 분석하는 연습이 필요하며,
i
와j
포인터의 이동 로직을 철저히 검증해야 함