Roman to Integer (LeetCode)
문제설명
- I, V, X, L, C, D, M 까지 각각의 로마 문자에 해당하는 정수값이 있음
- 같은 문자를 나열해 더하거나 정수값이 큰 문자 다음 작은 문자를 나열해 둘을 더함
- 하지만 4와 9를 표현하려면 IV, IX처럼 정수값이 작은 문자가 앞에 와 두 값을 뺌
- 입력한 문자열 s를 정수값으로 반환
- 참고자료
제한조건
- 문자열 s의 길이는 1이상 15이하
- 문자열 s의 정수값 범위는 1이상 3999이하
풀이
var romanToInt = function(s) {
const alphabet = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
const sArr = s.split(''); // 문자 배열
const nArr = []; // 숫자 배열
let alphabetSum = 0; // 해당 문자의 정수값을 저장할 변수
sArr.map((value,idx)=>{
// 현재 문자와 다음 문자가 다를때
if(sArr[idx] !== sArr[idx+1]){
// 현재 문자의 숫자값이 다음문자의 숫자값보다 작을때
if(alphabet[sArr[idx]] < alphabet[sArr[idx+1]]){
alphabetSum += alphabet[value];
nArr.push(alphabetSum * -1);
alphabetSum = 0;
}
// 현재 문자의 숫자값이 다음문자의 숫자값보다 크거나 문자열의 마지막 문자일때
else{
alphabetSum += alphabet[value];
nArr.push(alphabetSum);
alphabetSum = 0;
}
}
// 현재 문자와 다음 문자가 같을때
else
alphabetSum += alphabet[value];
});
return nArr.reduce((sum,cur)=> sum + cur,0);
};
체크포인트
- 문자열 인덱스 범위 밖에서 요소를 찾을 경우 undefined를 반환
- reduce 메소드로 정수합 누적 계산
Author And Source
이 문제에 관하여(Roman to Integer (LeetCode)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@vsnm25/Roman-to-Integer
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 문자열 s의 길이는 1이상 15이하
- 문자열 s의 정수값 범위는 1이상 3999이하
풀이
var romanToInt = function(s) {
const alphabet = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
const sArr = s.split(''); // 문자 배열
const nArr = []; // 숫자 배열
let alphabetSum = 0; // 해당 문자의 정수값을 저장할 변수
sArr.map((value,idx)=>{
// 현재 문자와 다음 문자가 다를때
if(sArr[idx] !== sArr[idx+1]){
// 현재 문자의 숫자값이 다음문자의 숫자값보다 작을때
if(alphabet[sArr[idx]] < alphabet[sArr[idx+1]]){
alphabetSum += alphabet[value];
nArr.push(alphabetSum * -1);
alphabetSum = 0;
}
// 현재 문자의 숫자값이 다음문자의 숫자값보다 크거나 문자열의 마지막 문자일때
else{
alphabetSum += alphabet[value];
nArr.push(alphabetSum);
alphabetSum = 0;
}
}
// 현재 문자와 다음 문자가 같을때
else
alphabetSum += alphabet[value];
});
return nArr.reduce((sum,cur)=> sum + cur,0);
};
체크포인트
- 문자열 인덱스 범위 밖에서 요소를 찾을 경우 undefined를 반환
- reduce 메소드로 정수합 누적 계산
Author And Source
이 문제에 관하여(Roman to Integer (LeetCode)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@vsnm25/Roman-to-Integer
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var romanToInt = function(s) {
const alphabet = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000
}
const sArr = s.split(''); // 문자 배열
const nArr = []; // 숫자 배열
let alphabetSum = 0; // 해당 문자의 정수값을 저장할 변수
sArr.map((value,idx)=>{
// 현재 문자와 다음 문자가 다를때
if(sArr[idx] !== sArr[idx+1]){
// 현재 문자의 숫자값이 다음문자의 숫자값보다 작을때
if(alphabet[sArr[idx]] < alphabet[sArr[idx+1]]){
alphabetSum += alphabet[value];
nArr.push(alphabetSum * -1);
alphabetSum = 0;
}
// 현재 문자의 숫자값이 다음문자의 숫자값보다 크거나 문자열의 마지막 문자일때
else{
alphabetSum += alphabet[value];
nArr.push(alphabetSum);
alphabetSum = 0;
}
}
// 현재 문자와 다음 문자가 같을때
else
alphabetSum += alphabet[value];
});
return nArr.reduce((sum,cur)=> sum + cur,0);
};
- 문자열 인덱스 범위 밖에서 요소를 찾을 경우 undefined를 반환
- reduce 메소드로 정수합 누적 계산
Author And Source
이 문제에 관하여(Roman to Integer (LeetCode)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vsnm25/Roman-to-Integer저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)