타이핑 스크립트로 문제 해결 사고방식을 배우는 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 초보 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 사용)
  • "이해 → 실험 → 작동 → 개선" 단계를 따라가면 복잡한 문제도 체계적으로 해결 가능