일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- docker
- generic
- loop
- webpack
- bash
- scss
- dotenv
- security
- VUE
- vue.js
- nginx
- Python
- 앙상블
- C#
- BOJ
- git
- leetcode
- machine learning
- npm
- JavaScript
- Clone
- condition
- property
- 보안
- type
- var
- C++
- AI
- TypeScript
- vuetify
Archives
- Today
- Total
ice rabbit programming
[LeetCode] 13. Roman to Integer 본문
https://leetcode.com/problems/roman-to-integer/
간만에 PS를 하나 풀었다. 원래는 BOJ(백준 온라인 저지)를 많이 풀었는데 요즘 친구들이 리트코드를 많이 풀길래 easy 한 문제를 골라서 풀어 보았다.
easy인 만큼 별로 어려운 문제는 아니었다. 로마기호를 10진수로 변환하는 문제였다.
문제에서 4, 9, 40, 90 등 어떻게 처리해야되는지 힌트를 많이 주었다.
단순하게 가장 끝자리부터 더해가는 식으로 계산했고, 앞자리 수가 빼야할 수면 따로 빼 주었다. 간단하게 5분 정도만에 풀었다.
class Solution {
public:
int romanToInt(string s) {
int result = 0;
for (int i = s.length(); i >= 0; i--) {
char temp = s[i];
switch(temp) {
case 'I':
result += 1;
break;
case 'V':
if (i > 0 && s[i - 1] == 'I') {
result += 4;
i--;
}
else
result += 5;
break;
case 'X':
if (i > 0 && s[i - 1] == 'I') {
result += 9;
i--;
}
else
result += 10;
break;
case 'L':
if (i > 0 && s[i - 1] == 'X') {
result += 40;
i--;
}
else
result += 50;
break;
case 'C':
if (i > 0 && s[i - 1] == 'X') {
result += 90;
i--;
}
else
result += 100;
break;
case 'D':
if (i > 0 && s[i - 1] == 'C') {
result += 400;
i--;
}
else
result += 500;
break;
case 'M':
if (i > 0 && s[i - 1] == 'C') {
result += 900;
i--;
}
else
result += 1000;
break;
}
}
return result;
}
};
switch-case문을 사용했다 보니 케이스가 많아서 좀 코드가 길어진 감이 있는데, 딱히 쇼트코드가 떠오르지 않았다.
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] Remove Element (0) | 2020.04.15 |
---|---|
[LeetCode] Remove Duplicates From Sorted Array (0) | 2020.04.15 |
[LeetCode] 9. Palindrome Number (0) | 2020.04.12 |
[LeetCode] 7. Reverse Integer (0) | 2020.04.12 |
[LeetCode] 21. Merge Two Sorted Lists (0) | 2020.04.12 |