코린이의 소소한 공부노트

[LeetCode/Easy] 13. Roman to Integer 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 13. Roman to Integer

무지맘 2022. 8. 9. 22:25

1. Input

1) 로마자를 담고있는 String 변수 s

2) 로마자의 숫자 표현

로마자 숫자 로마자 숫자 로마자 숫자 로마자 숫자 로마자 숫자
I 1 II 2 III 3 IV 4 V 5
VI 6 VII 7 VIII 8 IX 9 X 10
XX 20                
XL 40 XC 90 CD 400 CM 900    
L 50 C 100 D 500 M 1000    
LX 60 CX 110 DC 600 MC 1100    

 

2. Output

1) s의 로마자를 10진수로 바꾼 int 값

 

3. Constraint

1) 1 <= s.length <= 15

2) s는 'I', 'V', 'X', 'L', 'C', 'D', 'M'로만 이루어져 있음

3) s를 숫자로 바꾸면 반드시 [1, 3999]에 속한 숫자가 됨

 

4. Example

Input: s = "MCMXCIV"
Output: 1994
설명: M = 1000, CM = 900, XC = 90, IV = 4.

 

5. Code

1) 첫 코드

int sum = 0;
    for(int i=0 ; i<s.length() ; i++){
        if(s.charAt(i)=='I'){
            if(i==s.length()-1)
                sum += 1;
            else if(s.charAt(i+1)=='V' || s.charAt(i+1)=='X')
                sum -= 1;
            else
                sum += 1;
        }
        else if(s.charAt(i)=='X'){
            if(i==s.length()-1)
                sum += 10;
            else if(s.charAt(i+1)=='L' || s.charAt(i+1)=='C')
                sum -= 10;
            else
                sum += 10;
        }
        else if(s.charAt(i)=='C'){
            if(i==s.length()-1)
                sum += 100;
            else if(s.charAt(i+1)=='D' || s.charAt(i+1)=='M')
                sum -= 100;
            else
                sum += 100;
        }
        else if(s.charAt(i)=='V')
            sum += 5;
        else if(s.charAt(i)=='L')
            sum += 50;
        else if(s.charAt(i)=='D')
            sum += 500;
        else // 'M'
            sum += 1000;            
    }
return sum;

  - 다음에 오는 문자와 함께 비교해서 계산