728x90
반응형
C# 으로 제출한 답안
public class Solution
{
public int RomanToInt(string s)
{
int result = 0;
string prev = string.Empty;
for(int i = 0; i < s.Length; i++)
{
switch (s.Substring(i, 1))
{
case "I":
result += 1;
break;
case "V":
if (prev == "I") result += 3;
else result += 5;
break;
case "X":
if (prev == "I") result += 8;
else result += 10;
break;
case "L":
if (prev == "X") result += 30;
else result += 50;
break;
case "C":
if (prev == "X") result += 80;
else result += 100;
break;
case "D":
if (prev == "C") result += 300;
else result += 500;
break;
case "M":
if (prev == "C") result += 800;
else result += 1000;
break;
}
prev = s.Substring(i, 1);
}
return result;
}
}
Runtime: 106 ms Your runtime beats 35.35 % of csharp submissions.
Memory Usage: 35.7 MB Your memory usage beats 88.25 % of csharp submissions.
메모리 사용은 꽤 효율적이나 실행 시간이 많이 늦어 보인다.
검색 답안 - python
class Solution:
def romanToInt(self, s):
roman = { "I" : 1, "V" : 5, "X" : 10,
"L" : 50, "C" : 100, "D" : 500, "M" : 1000 }
res = 0
for i in range(len(s)):
if i + 1 < len(s) and roman[s[i]] < roman[s[i + 1]]:
res -= roman[s[i]]
else:
res += roman[s[i]]
return res
Runtime: 44 ms Your runtime beats 58.30 % of csharp submissions.
Memory Usage: 13.5 MB Your memory usage beats 60.97 % of csharp submissions.
실행 시간이 반으로 줄었다. 그러나 여전히 파이썬 제출자 중에서는 엄청 빠른 편은 아니다.
메모리 사용은 3분의 1정도로 줄었다. 아무래도 파이썬 언어 특성인 것 같다.
검색 답안 python 을 C# 으로 수정
public class Solution
{
public int RomanToInt(string s)
{
Dictionary<string, int> roman = new Dictionary<string, int>();
roman.Add("I", 1);
roman.Add("V", 5);
roman.Add("X", 10);
roman.Add("L", 50);
roman.Add("C", 100);
roman.Add("D", 500);
roman.Add("M", 1000);
int res = 0;
for(int i = 0; i < s.Length; i++)
{
if (i != s.Length - 1 && roman[s.Substring(i, 1)] < roman[s.Substring(i + 1, 1)])
res -= roman[s.Substring(i, 1)];
else
res += roman[s.Substring(i, 1)];
}
return res;
}
}
Runtime: 106 ms Your runtime beats 35.35 % of csharp submissions.
Memory Usage: 35.7 MB Your memory usage beats 88.25 % of csharp submissions.
Dictionary 를 사용하였다. 그러나 처음 제출한 코드와 동일한 실행시간과 메모리 사용을 보였다.
728x90
반응형
'서적 > 리트코드' 카테고리의 다른 글
C# 리트코드 20. Valid Parentheses (0) | 2022.01.19 |
---|---|
C# 리트코드 14. Longest Common Prefix (0) | 2022.01.18 |
C# 리트코드 1. Two Sum (0) | 2022.01.13 |