https://leetcode.com/problems/integer-to-roman/description
Q. 주어진 정수를 로마 문자로 변경하라.
Solution.
정수를 로마 문자를 바꾸려면 우선, 4, 9, 40, 90 등에 대한 특수 문자에 대한 처리를 해야 한다.
또한 자리수 고려를 잘 해야 한다.
딱히 알고리즘이라고 할 것은 없고, 로직 전개대로 코드를 작성한다.
더보기
public string IntToRoman(int num)
{
Dictionary<int, string> dictStr = new Dictionary<int, string>();
dictStr.Add(1, "I");
dictStr.Add(5, "V");
dictStr.Add(10, "X");
dictStr.Add(50, "L");
dictStr.Add(100, "C");
dictStr.Add(500, "D");
dictStr.Add(1000, "M");
dictStr.Add(4, "IV");
dictStr.Add(9, "IX");
dictStr.Add(40, "XL");
dictStr.Add(90, "XC");
dictStr.Add(400, "CD");
dictStr.Add(900, "CM");
string ret = "";
int pos = 1;
while(num > 0)
{
string strCur = "";
int digit = num%10;
int val = digit * pos;
if(dictStr.ContainsKey(val))
{
strCur = dictStr[val];
}
else
{
string mul;
if(val < 10)
{
mul = "I";
if(val >= 5)
{
strCur += "V";
digit %= 5;
}
}
else if(val < 100)
{
mul = "X";
if(val >= 50)
{
strCur += "L";
digit %= 5;
}
}
else if(val < 1000)
{
mul = "C";
if(val >= 500)
{
strCur += "D";
digit %= 5;
}
}
else mul = "M";
for(int j = 0; j < digit; ++j)
strCur += mul;
}
ret = strCur + ret;
num /= 10;
pos *= 10;
}
return ret;
}
적절한 결과.
'Leetcode > Top Interview 150' 카테고리의 다른 글
[Array/String][Easy] 14. Longest Common Prefix (0) | 2024.05.01 |
---|---|
[Array/String][Easy] 58. Length of Last Word (0) | 2024.05.01 |
[Array/String][Easy] 13. Roman To Integer (0) | 2024.05.01 |
[Array/String][Medium] 80. Remove Duplicates from Sorted Array II (0) | 2024.04.28 |
[Array/String][Easy] 26. Remove Duplicates from Sorted Array (1) | 2024.04.28 |