피드로 돌아가기
LeetCode Solution: 12. Integer to Roman
Dev.toDev.to
Backend

Greedy Lookup Table 기반 O(1) 시간·공간 복잡도 구현

LeetCode Solution: 12. Integer to Roman

Hommies2026년 5월 21일9beginner

Context

정수 값을 로마 숫자 체계로 변환하는 과정에서 발생하는 복잡한 가감법 규칙 처리 필요. 단순 조건문 기반의 변환 로직은 코드 복잡도를 증가시키며 예외 케이스 처리 시 유지보수 효율을 저하시키는 한계 존재.

Technical Solution

  • 가감법 규칙(Subtractive forms)을 포함한 13개의 정적 매핑 테이블 설계
  • 값의 크기를 기준으로 내림차순 정렬하여 최적의 기호를 우선 선택하는 Greedy 알고리즘 적용
  • 정수 나눗셈(//)과 나머지 연산을 통한 반복적 값 차감 및 기호 매칭 프로세스 구축
  • Python의 String Concatenation 오버헤드 방지를 위해 List Append 후 Join 방식 채택
  • 입력 범위(1~3999)를 상수로 한정하여 고정된 메모리 사용량 확보

- 복잡한 조건 분기가 예상되는 규칙 기반 변환 시, 특수 케이스를 포함한 Lookup Table 설계를 우선 검토할 것 - Greedy 알고리즘 적용 시 데이터셋의 정렬 순서가 결과의 정확성을 결정하는 핵심 변수임을 인지할 것 - 문자열 생성 빈도가 높은 로직에서 불변 객체(Immutable String)의 반복 합산 대신 가변 리스트를 활용한 효율적 조인 구조를 사용할 것

원문 읽기