Profile image with cat

Jaehee

Hi!

Thumbnail of LeetCode - 12. Integer to Roman

LeetCode - 12. Integer to Roman LeetCode

작성일 : 2021년 11월 15일  / 수정일 : 2024년 06월 05일

목차

  1. 문제 개요
  2. 풀이
    1. Solution
      1. 제출 결과

문제 개요

난이도 - MEDIUM 사용 언어 - C++

정수형 숫자가 입력되면 해당 숫자를 로마자 숫자로 변환하는 문제입니다.

또한, 수의 범위는 1 <= x <= 3999 사이로만 입력됩니다.

문제 - LeetCode 12. Integer to Roman

풀이

Solution

난이도에 비해 문제가 쉽기 때문에 큰 설명은 필요하지 않을 듯 합니다.

이번에 푸는 방식은 수의 범위가 넓지 않기에 if 문을 활용해 10의 배수에 따라 적절한 문자로 치환하는 방식을 사용하였지만, 필요에 따라 테이블 형태의 자료형에 저장하여 참조하는 방식으로 구현해도 될 듯 합니다.

제출 결과

Solution 1 result

코드 전문
#include <string>
 
class Solution 
{
public:
    std::string intToRoman(int num) 
    {
        std::string result = "";
 
        int multiple = 0;
        while (num > 0)
        {
            int digit = num % 10;
 
            std::string one = "I";
            std::string four = "IV";
            std::string five = "V";
            std::string nine = "IX";
 
            if (multiple == 1)
            {
                one = "X";
                four = "XL";
                five = "L";
                nine = "XC";
            }
            else if (multiple == 2)
            {
                one = "C";
                four = "CD";
                five = "D";
                nine = "CM";
            }
            else if (multiple == 3)
            {   
                one = "M";
            }
 
            if (digit == 4) result.insert(0, four);
            else if (digit == 9) result.insert(0, nine);
            else
            {
                std::string tmp = "";
 
                if (digit >= 5)
                {
                    tmp += five;
                    digit -= 5;
                }
 
                for (int i = 0; i < digit; i++)
                {
                    tmp += one;
                }
                
                result.insert(0, tmp);
            }
 
            multiple++;
            num /= 10;
        }
 
        return result;
    }
};

LeetCode  시리즈의 다른 게시물 보기

Thumbnail of LeetCode - 16. 3Sum Closest

정수형 배열과 세 정수를 더했을 때 target 숫자와 가장 가까운 세 숫자의 덧셈을 반환합니다.

2021년 11월 24일

Thumbnail of LeetCode - 15. 3Sum

정수형 배열이 주어질 때 세 정수의 합이 0이 되는 모든 가짓수를 찾습니다.

2021년 11월 23일

Thumbnail of LeetCode - 14. Longest Common Prefix

문자열 배열이 주어질때 문자열들 중 가장 긴 접두사를 찾습니다.

2021년 11월 19일

Thumbnail of LeetCode - 13. Roman to Integer

주어진 로마 숫자를 정수형 숫자로 변환합니다.

2021년 11월 17일

Thumbnail of LeetCode - 12. Integer to Roman

정수형 숫자가 주어질 때 로마 숫자로 변환합니다.

2021년 11월 15일

Thumbnail of LeetCode - 11. Container With Most Water

다양한 길이를 가진 막대들을 이용해 가장 많은 액체를 담을 수 있는 양을 구합니다.

2021년 11월 13일

Thumbnail of LeetCode - 10. Regular Expression Matching

정규 표현식 "."과 "*"을 구현하여 문자열에서 패턴을 탐색합니다.

2021년 11월 10일

Thumbnail of LeetCode - 9. Palindrome Number

입력된 정수가 회문인지 검사합니다.

2021년 11월 08일