Notice
Recent Posts
Recent Comments
Link
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

stardust-seok 님의 블로그

[LeetCode] 13.Roman to Integer (Python 3) 본문

카테고리 없음

[LeetCode] 13.Roman to Integer (Python 3)

stardust-seok 2026. 6. 29. 10:46

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

 

Roman to Integer - LeetCode

Can you solve this real interview question? Roman to Integer - Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just tw

leetcode.com

 

class Solution:
    def romanToInt(self, s: str) -> int:
        roman_map = {
            'I' : 1,
            'V' : 5,
            'X' : 10,
            'L' : 50,
            'C' : 100,
            'D' : 500,
            'M' : 1000
        }
        total = 0
        length = len(s)

        for i in range(length):
            current_value = roman_map[s[i]]

            if i+1 < length and current_value < roman_map[s[i+1]]:
                total -=current_value
            else:
                total += current_value
        return total

       
 

_________________________________________________________________________
1. 로마 숫자와 정수 매핑 딕셔너리(roman_map)를 만든다.
2. 최종 합계를 저장할 변수(total)를 0으로 초기화한다.
3. 문자열 s의 길이만큼 인덱스(i)를 돌리는 루프를 시작한다.
4. 만약 (현재 인덱스 i가 마지막 글자가 아니고) AND (현재 글자의 숫자 값 < 다음 글자의 숫자 값) 이라면:
    -> 예: "IV"에서 I(1) 뒤에 V(5)가 온 상황
    -> total에서 현재 글자의 숫자 값을 '뺀다'.
5. 그 외의 모든 경우라면:
    -> 일반적인 경우이므로 total에 현재 글자의 숫자 값을 '더한다'.
6. 루프가 끝나면 total을 반환(return)한다.

 

오늘 배운 개념
1. i+1 < length 이유 :

- 로마 숫자 표기법을 따르면 큰 숫자는 앞으로 온다. 따라서 뒤 조건이 결국은 예외 케이스의 경우에서의 계산을 위한 방식이다.

마지막 글자 검사 시 s[i+1]을 하게 되면 무조건 인덱스 보다 작게나오기때문에 오류가 발생하게 되는데 이러한 경우를 해결하기 위해 false로 바로 반환 즉 else 문을 실행하게 하기 위함이다.

 

아쉬운점

- 처음이라는 핑계로 의사코드를 직접 입력하는걸 무시하고 Gemini를 사용해버렸다.

 

카테캠 그라운드 룰을 적용하자 무조건 !

----

 

  • 1단계 (질문자님): 문제를 읽고, "이 문제는 해시맵을 써서 이렇게 풀어야 할 것 같다" 혹은 "파이썬 문법을 몰라서 리스트를 어떻게 뒤집는지 모르겠다"처럼 자신의 생각이나 막히는 문법 지점을 먼저 말해줍니다.
  • 2단계 (Gemini): 완성된 코드를 주는 것이 아니라, 구현에 필요한 파이썬의 핵심 문법(예: 딕셔너리 사용법, 정렬 방법)과 의사코드(Pseudocode, 말로 푸는 로직)만 제공합니다.
  • 3단계 (질문자님): 제공받은 문법과 논리를 바탕으로 직접 파이썬 코드를 작성해 봅니다.
  • 4단계 (함께): 작성한 코드가 왜 돌아가는지, 시간 복잡도는 어떻게 되는지 검증하고 카테캠 룰에 맞게 [AI-assisted] 주석 양식을 정리합니다.

----