LeetCode -[로마에서 정수로] JS 변형
따라서 로마 정수는 소수의 영문자로 계산된다는 것을 알고 있기 때문입니다. 그것들은 I, V, X, L, C, D, M이며 각각은 연관된 숫자 값을 가집니다. 가장 먼저 할 일은 이 값을 객체에 저장하는 것입니다.
const romanD = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
이제 문제는 로마 기호로 들어오는 임의의 입력(문자열)이 있다는 것입니다. 우리는 그것들을 요약해야 합니다. 예를 들어 입력이 'III'이면 I의 숫자 값이 1이므로 합계는 3이 됩니다. 따라서 'XV'는 15가 됩니다. 유일한 차이점은 입력 값 중 하나라도 다음 값보다 작은 값을 갖는 경우 덧셈이 아니라 뺄셈이라는 것입니다. 예를 들어,
XL === 40
하지만 60
는 아닙니다.가장 먼저 하는 일은 의사 코드입니다. CS50 덕분에!
//store the roman value {}
//split the input
//have an accumulator variable
//run a loop over
//if the curInput < nextInput (substract) else (sum up)
//return or console.log the accumulator
이제 첫 번째 코드는 전통적인 ForLoop를 사용합니다. 이렇게 갑니다 -
자, 이것이 너무 추상화 된 경우 여기에 단순화 된 버전이 있습니다.
이것이 당신에게 꽤 자명하기를 바랍니다. 그렇지 않은 경우 댓글을 남겨주세요. 문제를 분석해 드리겠습니다.
이제 ForEach 루프를 사용한 또 다른 변형입니다. 이렇게 갑니다 -
이것이 다시 추상적인 경우 위의 단순화된 버전을 보십시오. 당신이 알고 있는 것은 단지 if..else 문일 뿐입니다. 배열을 제공하는 입력
split()
이후 여기에서 forEach를 실행할 수 있었습니다. 예, 알아요. 언급하지 않았습니다. 다음은 완전한 코드입니다 ...forLoop에서 실행 시간은 -
78 to 102ms
사이입니다.forEach를 사용하면 실행 시간은 -
74 to 100ms
사이입니다.하지만 컴퓨터의 하드웨어 품질이 이번에도 영향을 미칩니다.
Reference
이 문제에 관하여(LeetCode -[로마에서 정수로] JS 변형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codeonjim/leetcode-roman-to-integer-js-variations-30fa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)