>웹 프론트엔드 >JS 튜토리얼 >LeetCode: 로마 숫자를 정수로

LeetCode: 로마 숫자를 정수로

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-17 17:38:18985검색

LeetCode: Roman Numeral to Integer

로마 숫자는 오늘날에도 여전히 사용되는 고대 숫자 체계입니다. 이를 일반 정수로 변환하는 것은 일반적인 프로그래밍 과제입니다. 이 변환을 우아하게 처리하는 솔루션을 분석해 보겠습니다.

로마 숫자 체계

코드를 살펴보기 전에 로마 숫자의 작동 방식을 이해해 봅시다.

  • 기본 기호: I(1), V(5), X(10), L(50), C(100), D(500), M(1000)
  • 숫자는 일반적으로 가장 큰 것에서 가장 작은 것, 왼쪽에서 오른쪽으로 기록됩니다
  • 작은 숫자가 큰 숫자 앞에 오면 뺄셈을 의미합니다

해결책

function romanToInteger(str) {
  let symbols = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000,
  }

  let result = 0

  for (let i = 0; i < str.length; i++) {
    const current = str[i]
    const next = str[i + 1]

    if (symbols[current] < symbols[next]) {
      result -= symbols[current]
    } else {
      result += symbols[current]
    }
  }

  return result
}

작동 방식: 단계별

1. 기호 매핑
먼저, 각 로마 숫자를 해당 정수 값에 매핑하는 객체를 만듭니다. 이를 통해 값을 빠르게 조회할 수 있습니다.

2. 문자열 반복
입력 문자열의 각 문자를 반복하면서 현재 문자와 다음 문자를 모두 추적합니다.

3. 핵심 논리
각 문자에 대해 해당 값을 다음 문자의 값과 비교합니다.

  • 현재 값이 다음 값보다 작으면 해당 값을 뺍니다. (IV = 4와 같은 경우를 처리합니다)
  • 그렇지 않으면 결과에 추가합니다(VI = 6과 같은 경우 처리)

romanToInteger("III") → 3
각각 결과에 1을 더합니다

romanToInteger("IV") → 4
V보다 작아서 뺍니다

romanToInteger("IX") → 9
X보다 작아서 뺍니다

결론

이 솔루션은 간단한 비교 기술을 사용하여 로마 숫자를 정수로 변환하는 작업을 우아하게 처리합니다. 코드는 간결하면서도 모든 유효한 로마 숫자 입력을 처리할 만큼 강력합니다.

위 내용은 LeetCode: 로마 숫자를 정수로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.