피드로 돌아가기
PWC 370 Scramble On, Scramblin' Man
Dev.toDev.to
Backend

Memoization 기반 Recursive Search로 Factorial 복잡도 해결

PWC 370 Scramble On, Scramblin' Man

Bob Lied2026년 4월 26일7intermediate

Context

두 문자열의 Scramble 가능 여부를 판단하기 위해 모든 경우의 수를 탐색해야 하는 과제 직면. 단순 생성 방식 채택 시 문자열 길이 n에 따라 Factorial Complexity가 발생하는 구조적 한계 존재.

Technical Solution

  • Search-based approach를 통한 불필요한 문자열 생성 배제 및 탐색 범위 최적화
  • State 변수를 활용한 Custom Memoization 구현으로 중복 계산 제거 및 시간 복잡도 개선
  • 문자열을 Head와 Tail로 분할하여 상대 문자열의 Front/Back과 비교하는 Recursive Logic 설계
  • 단순 일치 사례를 우선 처리하는 Early Return 전략으로 불필요한 재귀 호출 최소화
  • 재귀 깊이에 따른 Log Indentation 적용으로 복잡한 호출 스택의 가시성 확보
  • Memoize 모듈 대신 직접 구현한 캐시를 통해 depth 인자로 인한 Cache Miss 방지

- 지수적 복잡도가 예상되는 재귀 함수 설계 시 State 기반 Memoization 적용 검토 - 분할 정복(Divide and Conquer) 적용 시 Base Case와 Early Return 조건을 최우선 정의 - 디버깅 효율을 위해 재귀 깊이(depth)를 인자로 전달하여 실행 경로를 시각화

원문 읽기