로마자(문자열)를 인자로 받아 그에 해당하는 수를 반환하는 문제이다. 로마자의 정해진 규칙(첫자리가 4 혹은 9일 경우)의 패턴을 살피다 보니 문제를 풀 수 있었다.
function romanToNum(s) {
const romeDic = {
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000
}
let result = 0
let sSplit = s.split('')
let numArr = sSplit.map(rome => romeDic[rome])
for (let i=0; i<numArr.length; i++) {
if (numArr[i] < numArr[i+1]){
result-=numArr[i]
}
else {
result+=numArr[i]
}
}
return result;
}
느낀 점
문제에서 요구하는 점이 무엇인지를 정확히 파악하는 것이 가장 빠른 길을 안내한다고 느꼈다. 처음에는 문제를 제대로 이해하지 못하였기에 접근을 돌아가는 길로 잡았지만, 문제를 3번 정도 더 읽고 나니 정해진 규칙(4와 9의 앞자리를 가지는 경우에만 해당 문자의 앞의 값의 해당하는 값을 빼주면 된다.)을 알고 나니 속전속결로 코드를 짜 문제를 풀 수 있었다. 앞으로도 꼭 지문을 꼼꼼히 잘 읽도록 하자.