피드로 돌아가기
Dev.toBackend
원문 읽기
Lookahead 패턴 기반의 O(N) 시간 복잡도 로마 숫자 변환 설계
LeetCode Solution: 13. Roman to Integer
AI 요약
Context
로마 숫자의 표기법상 작은 값이 큰 값 앞에 올 때 감산하는 특례 규칙으로 인한 단순 합산 불가 문제 발생. 문자열의 순차적 처리 과정에서 현재 문자의 처리 방식이 다음 문자의 값에 의존하는 상태 의존성 해결 필요.
Technical Solution
- Hash Map을 통한 로마 숫자 기호별 정수 값의 O(1) 상수 시간 조회 구조 설계
- Lookahead 전략을 적용하여 현재 값과 다음 값을 비교하는 조건부 가산 로직 구현
zip(s, s[1:])함수를 활용해 인접 문자 쌍을 생성함으로써 인덱스 기반 접근의 복잡도 제거- 현재 값이 다음 값보다 작은 경우 감산 처리하는 예외 케이스의 일반화
- 루프 범위 밖의 마지막 문자를 항상 가산하는 후처리 단계를 통한 경계 조건 해결
- 입력 문자열 길이에 비례하여 단 한 번의 순회만 수행하는 단일 패스 아키텍처 채택
실천 포인트
1. 문자열 처리 시 인접 요소 간의 관계가 중요한 경우 Lookahead/Lookbehind 패턴 검토
2. 빈번한 값 조회가 필요한 정적 매핑 데이터는 Dictionary/Hash Map으로 관리
3. 반복문 종료 후 처리되지 않은 마지막 요소(Edge Case)에 대한 후처리 로직 정의