일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 취미
- 3d퍼즐
- 버즈2프로
- 메탈퍼즐
- LeetCode
- 발더스모드
- 발더스3
- 코딩테스트
- 나쫌
- 알고리즘테스트
- 뜨아거
- 바질토마토뭐시기
- 천등
- 잠실새내
- 코테
- javascript
- 송리단
- 토이프로젝트
- 누룽지소금빵
- 눈알빠지겠네
- 밥먹고
- 서울제빵소
- 하스스톤
- 노노그램
- 발더스게이트
- 메일우유
- 미앤아이
- 맛집
- DIY
- 게임
- Today
- Total
.Zzumbong
[leetCode/JS] 13. Roman to Integer 본문
문제 설명
Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
For example, 2
is written as II
in Roman numeral, just two ones added together. 12
is written as XII
, which is simply X + II
. The number 27
is written as XXVII
, which is XX + V + II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used:
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given a roman numeral, convert it to an integer.
입출력 예
Example 1:
Input: s = "III"
Output: 3
Explanation: III = 3.
Example 2:
Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 3:
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
Constraints
1 <= s.length <= 15
s
contains only the characters('I', 'V', 'X', 'L', 'C', 'D', 'M')
.- It is guaranteed that
s
is a valid roman numeral in the range[1, 3999]
.
내 솔루션
- 로마자를 받아서
switch case
로 하다가 아 바본가! 하면서object
로 map을 만들어서 했다. - 현재 나보다 큰 숫자가 나오면 뺀다 라는 것을 알아내면 나머진 일사천리!
var romanToInt = function(s) {
const romans = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000,
}
let sum = 0;
for(let i = 0; i < s.length; i++) {
if(romans[s[i]] < romans[s[i+1]]) sum -= romans[s[i]];
else sum += romans[s[i]];
}
return sum;
};
감상평
- 실제로 실용적인 문제를 푼거 같아서 매우 맘에든다.
- 나중에 다른 솔루션들을 봤는데 나랑 똑같이 푼사람들이 좀 있는 것 같다. 신기해
'coding test > leetCode' 카테고리의 다른 글
[leetCode/JS] 1926. Nearest Exit from Entrance in Maz (0) | 2022.11.24 |
---|---|
[leetCode/JS] 46. Permutations (0) | 2022.11.24 |
[leetCode/JS] 5. Longest Palindromic Substring (0) | 2022.11.24 |
[leetCode/JS] 224. Basic Calculator (0) | 2022.11.24 |
[leetCode/JS] 2047. Number of Valid Words in a Sentence (0) | 2022.11.24 |