간만에 주말에 심심해서 문제를 좀 풀어봤다.
딱히 어렵진 않아서 설명은 생략
class Solution {
public:
static int val(char c) {
switch (c) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
int romanToInt(string s) {
int adder = 0;
int l = (int) s.size(); // size_t -> int
int i = 0;
while (i < l) {
char curr_char = s[i];
int curr = val(curr_char);
int next = -1;
if (i + 1 < l) {
next = val(s[i + 1]);
}
if (next == -1) {
adder += curr;
return adder;
}
if (curr_char == 'I' || curr_char == 'X' || curr_char == 'C') {
if (next > curr) {
adder += (next - curr);
i += 2;
} else {
adder += curr;
i++;
}
} else {
adder += curr;
i ++;
}
}
return adder;
}
};
/*
int romanToInt(string s) {
int num = 0;
int l = (int) s.size(); // size_t -> int
int i = 0;
while (i < l) {
char curr = [i];
char next = '-';
if (i + 1 <= l - 1) {
next = s[i + 1];
}
if (next == '-') {
num += m.at(curr);
return num; // finish calc
}
if (curr == 'I' || curr == 'X' || curr == 'C') {
int front = m.at(curr);
int back = m.at(next);
if (back > front ) {
num += (back - front);
i += 2;
} else {
num += front;
i += 1;
}
} else {
num += m.at(curr);
i ++;
}
}
return num;
}
*/'Algorithm > 문제풀이' 카테고리의 다른 글
| [leetcode] 9. Palindrome (0) | 2025.08.30 |
|---|---|
| [leetcode] 3079. Find the Sum of Encrypted Integers - Rust (0) | 2024.05.03 |
| [leetcode] 2451. Odd String Difference - Rust (0) | 2024.05.03 |
| [leetcode] 1417. Reformat The String in C++ (0) | 2024.05.01 |
| [BOJ] 백준 16939 - 2×2×2 큐브 - Java solution (0) | 2022.11.11 |