/C06034 - Số la mã

<Problem>

https://code.ptit.edu.vn/student/question/C06034
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

#define max(i, j) ((i > j) ? i : j)

int main() {
	int t;
	scanf("%d", &t);
	getchar();

	int I = 1;
	int V = 5;
	int X = 10;
	int L = 50;
	int C = 100;
	int D = 500;
	int M = 1000;

	while (t--) {
		char s[500];
		gets(s);

		int sum = 0;

		for (int i = 0; i < strlen(s); i++) {
			switch (s[i])
			{
			case 'I': {
				if (s[i + 1] == 'V') {
					sum += 4;
					i++;
				}
				else if (s[i + 1] == 'X') {
					sum += 9;
					i++;
				}
				else sum += 1;
				break;
			}

			case 'V': {
				sum += 5;
				break;
			}

			case 'X': {
				if (s[i + 1] == 'L') {
					sum += 40;
					i++;
				}
				else if (s[i + 1] == 'C') {
					sum += 90;
					i++;
				}
				else sum += 10;
				break;
			}

			case 'L': {
				sum += 50;
				break;
			}

			case 'C': {
				if (s[i + 1] == 'D') {
					sum += 400;
					i++;
				}
				else if (s[i + 1] == 'M') {
					sum += 900;
					i++;
				}
				else sum += 100;
				break;
			}

			case 'D': {
				sum += 500;
				break;
			}

			case 'M': {
				sum += 1000;
				break;
			}
			}
		}

		printf("%d", sum);

		printf("\n");
	}


	return 0;
}