250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Set
- 내일배움캠프
- 시각화
- f-string
- AB테스트
- 데이터전처리
- SQLD
- 가설검정
- 내일배움일지
- 아티클스터디
- 데이터시각화
- 통계학
- DATE_SUB
- Leetcode
- 한줄for문
- 다중공선성
- Til
- Join
- 선형회귀
- python
- 리스트
- map
- 이중for문
- 내배캠_학습기록
- 반복문
- 프로그래머스
- 태블로
- SQL
- ★
- Max
Archives
- Today
- Total
노력에는 지름길이 없으니까요
LeetCode - 13. Roman to Integer (Python ver.) 본문
728x90
해결일 | 언어 | 레벨 | 테스트명 |
20240906 | Python | easy | 13. Roman to Integer |
링크 : https://leetcode.com/problems/roman-to-integer/description/
내 코드
class Solution:
def romanToInt(self, s: str) -> int:
test = {1 : 'I',
5 : 'V',
10: 'X',
50: 'L',
100: 'C',
500: 'D',
1000:'M'}
sum = 0
for key, value in test.items():
sum += key*(s.count(value))
for i in range(len(s)-1) :
if s[i] == 'I' and ((s[i+1] == 'V') or (s[i+1] == 'X')) :
sum-=1*2
elif s[i] == 'X' and ((s[i+1] == 'L') or (s[i+1] == 'C')) :
sum-=10*2
elif s[i] == 'C' and ((s[i+1] == 'D') or (s[i+1] == 'M')) :
sum-=100*2
else : continue
return sum
보강할 부분
- 우선 딕셔너리 설정 방식... 숫자를 value로 빼는 게 조금 더 일반적인 방식인 듯 하니 기억해두기
- for문을 굳이 두번 쓴건 게으르기 때문이다.
- 규칙을 조금 더 제대로 이해했다면 if문 늘릴 필요 없었을 듯 싶다
베스트 코드
class Solution:
def romanToInt(self, s: str) -> int:
dic = {"M":1000, "D": 500, "C": 100,"L":50, "X":10, "V": 5, "I":1}
temp = 0
for i in range(len(s)-1):
num = dic[s[i]]
next_num = dic[s[i+1]]
if(num>=next_num):
temp += num
else:
temp -= num
temp += dic[s[len(s)-1]]
return temp
방법이 하찮았기 때문에 나중에 다시 풀어보기
728x90
반응형
'Python > 프로그래머스' 카테고리의 다른 글
LeetCode - 1748. Sum of Unique Elements (Python ver.) (0) | 2024.09.16 |
---|---|
LeetCode - 1967. Number of Strings That Appear as Substrings in Word (1) | 2024.09.13 |
LeetCode - 9. Palindrome Number (Python ver.) (0) | 2024.09.04 |
프로그래머스 - (★) 숫자의 표현 (Python ver.) (0) | 2024.09.03 |
프로그래머스 - 직사각형 넓이 구하기 (Python ver.) (0) | 2024.08.01 |