단위값(1, 10, 100)일때 before_num에 저장후 다음의 값이 5, 10의 배수일때 before_num을 뺀만큼 sum에다가 더해준다.
ex) before_num = 10, current_num = 50 or 100 -> sum += 40 or 90
before_num 역시 sum에 더해져있기 때문에 추후에 더해지는 값은 30 or 80이 된다.
배수가 아닐시 문자에 맞는 Value값을 sum에 더해준다.
class Solution { public: int romanToInt(string s) { int sum = 0; int before_num = 0; for(auto c : s) { if(c == 'I') { sum += 1; before_num = 1; } else if(c == 'V') { if(before_num == 1) { sum += 3; before_num = 0; } else { sum += 5; } } else if(c == 'X') { if(before_num == 1) { sum += 8; before_num = 0; } else { sum += 10; before_num = 10; } } else if(c == 'L') { if(before_num == 10) { sum += 30; before_num = 0; } else { sum += 50; } } else if(c == 'C') { if(before_num == 10) { sum += 80; before_num = 0; } else { sum += 100; before_num = 100; } } else if(c == 'D') { if(before_num == 100) { sum += 300; before_num = 0; } else { sum += 500; } } else if(c == 'M') { if(before_num == 100) { sum += 800; before_num = 0; } else { sum += 1000; } } } return sum; } };
Result