타이핑 스크립트로 문제 해결 사고방식을 배우는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보 TypeScript/JavaScript 개발자
- 문제 해결 과정을 학습하고자 하는 중급 개발자
- 코딩 인터뷰 대비 준비자
- 난이도: 중간 (문제 분석 → 실수 → 개선 → 최적화 단계 포함)
핵심 요약
- 문제 해결 사고방식 핵심:
elementA2.includes(elementA1)
로 문자열 포함 관계를 반전해 정확한 로직 구현- 초기 실수를 통해 학습하는 과정이 개발자 성장에 중요
- 최적화 시
break
사용으로 중첩 루프 성능 개선 (O(n²) → O(n))
섹션별 세부 요약
1. 문제 정의 및 초기 접근
- 문제 설명:
a1
배열의 단어가a2
배열의 단어에 포함되는 경우를 찾는 알고리즘 구현- 예시:
["arp", "live", "strong"]
→["lively", "alive", "harp", "sharp", "armstrong"]
- 초기 오류:
elementA1.includes(elementA2)
로 짧은 문자열이 긴 문자열에 포함되는지 확인 (결과 항상false
)
2. 로직 수정 및 정확한 구현
- 정확한 조건:
elementA2.includes(elementA1)
로 긴 문자열이 짧은 문자열을 포함하는지 확인Set
사용으로 중복 제거 및 정렬- 함수 분리:
matchedWords()
→ 단어 매칭lexOrderSorted()
→ 사전 순 정렬(sort()
사용)
3. 성능 최적화 및 엣지 케이스 처리
- 최적화 전략:
a1
또는a2
배열이 비어 있을 경우 즉시new Set
반환() break
사용으로 중첩 루프 조기 종료 (성능 향상)- 코드 예시:
```typescript
for (let elementA2 of a2) {
if (elementA2.includes(elementA1)) {
matchedArr.add(elementA1);
break;
}
}
```
결론
- 실무 팁:
- 문제 해결 시 초기 실수를 두려워하지 않고 시도하는 자세 중요
includes()
메서드와Set
,sort()
를 활용한 반복 구조 최적화 필수- 성능 개선은 기능 구현 후에 진행하는 것이 핵심 (예:
break
사용) - "이해 → 실험 → 작동 → 개선" 단계를 따라가면 복잡한 문제도 체계적으로 해결 가능