솜이의 데브로그

[LeetCode] Roman to Integer (java) 본문

Algorithm/LeetCode

[LeetCode] Roman to Integer (java)

somsoming 2022. 4. 6. 23:43

https://leetcode.com/problems/roman-to-integer/

 

Roman to Integer - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제

 

 

풀이

각 알파벳에 대응 하는 숫자를 입력해야하는데, HashMap을 사용해서 각 Character 별 Integer를 입력해둔다.

HashMap<Character, Integer> 로 저장.

그리고 입력받은 문자열의 뒤부터 앞으로 돌아오면서 앞의 수가 더 큰지 확인하고, 해당하는 숫자에 매칭되는 값으로 가져와 더하거나 빼는 방식으로 계산한다.

 

주의해야할 점은 앞에서부터 비교하면 맨 뒤에 남는 숫자를 처리해줘야하기 때문에, 뒤에서부터 비교하면서 앞으로 오는 방식으로 했다. (어차피 맨 뒤 숫자는 더해주기 때문)

 

코드

class Solution {
    public int romanToInt(String s) {
        HashMap<Character, Integer> map = new HashMap();
        
        int sum = 0;
        
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
        
        sum = map.get(s.charAt(s.length()-1));
        for(int i=s.length() -2; i>=0; i--){
            int num = map.get(s.charAt(i));
            int next = map.get(s.charAt(i+1));
            if(num>=next) sum += num;
            else sum -= num;
        }
        
        return sum;
    }
}
Runtime: 4 ms, faster than 93.61% of Java online submissions for Roman to Integer.
Memory Usage: 42.7 MB, less than 85.35% of Java online submissions for Roman to Integer.

 

 

기억할 점

HashMap 사용법을 기억해두자. 바로 new HashMap() 으로 선언하고, 해시맵에 저장할 때는 put 을 넣고, 꺼내올 때는 get을 사용한다.

 

리트코드는 처음 풀어보는데, 입출력을 따로 조절하지 않아도 된다는 것도 알았다. 백준이랑은 조금 다르네..!

'Algorithm > LeetCode' 카테고리의 다른 글

[LeetCode] Remove Element (java)  (0) 2022.04.08
[LeetCode] Zigzag Conversion (java)  (0) 2022.04.07
[LeetCode] Two Sum (Java)  (0) 2022.04.07