문자열로 받은 로마숫자를 실생활에 사용 중인 아라비아 숫자로 변환하는 알고리즘.
/* * Ex: * translateRomanNumeral("LX") // 60 * 큰 로마숫자 앞에 작은 로마 숫자가 나타나면, 그 때에 가산 표기가 적용된다. * 큰 것의 앞에는 오직 하나의 작은 로마 숫자가 나타나는 것을 가정할 수 있다. * * Ex: * translateRomanNumeral("IV") // 4 * 유효하지 않은 입력값에는 null을 return해준다. */ var DIGIT_VALUES = { I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000 }; var translateRomanNumeral = function(romanNumeral) { // TODO: Implement me! if (typeof romanNumeral !== 'string') { //문자가 아닌 input이라면 유효하지 않음 return null; } else { if (romanNumeral === '') { //문자이지만 빈 문자열 input return 0; } else { //이 외에는 로마문자열이라고 일단 가정 result = 0; //문자열을 순회하면서 //현재 위치 기준으로 바로 뒤의 문자를 봤을 때, //1) DIGIT_VALUES key 배열 기준, 자신 바로 뒤의 key가 있는 경우면 if(string[i+1] === Object.keys(DIGIT_VALUES)[Object.keys(DIGIT_VALUES).indexOf(string[i]) + 1]) //result -= (DIGIT_VALUES[string[i]]) //2) DIGIT_VALUES key 배열 기준, 바로 뒤의 key가 아니면 result += (DIGIT_VALUES[string[i]]) let i = 0; while (i < romanNumeral.length) { if (DIGIT_VALUES[romanNumeral[i]] < DIGIT_VALUES[romanNumeral[i + 1]]) { result -= DIGIT_VALUES[romanNumeral[i]]; i++; } else { result += DIGIT_VALUES[romanNumeral[i]]; i++; } } return result; } } };
[python] 홀수/짝수 길이를 가지는 문자열의 가운데 문자만 출력하기 (0) | 2021.01.12 |
---|---|
rotated Array Search with O(log n) - javascript (0) | 2019.10.07 |
shuffleDeck (카드섞기) - Javascript (0) | 2019.07.10 |
asyncMap method for array of multiple functions - Javascript (0) | 2019.06.28 |
balanced parentheses - Javascript (1) | 2019.06.27 |
댓글 영역