Leetcode Java Integer to Roman
업데이트:
문제
코드
class Solution {
public String intToRoman(int num) {
String[] romans = new String[] { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int[] nums = new int[] { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
StringBuilder sb = new StringBuilder();
int idx = 0;
while (num > 0) {
int multiple = num / nums[idx];
for (int i = 0; i < multiple; i++) {
num -= nums[idx];
sb.append(romans[idx]);
}
idx++;
}
return sb.toString();
}
}
결과
설명
- 정수 숫자와 로마 숫자를 각 배열 nums와 romans에 정의한다.
- 같은 index에 해당 값이 존재하므로 1:1 매칭이 되어, 다른 배열로 정의하여도 된다.
- 높은 순서대로 정의하여, 순차 계산할 경우 오름차순으로 정렬된 로마 숫자 표현식이 되도록 한다.
- 로마 숫자 표현식을 동적으로 만들기 위해 변수 sb를 선언한다.
- 동적 문자열의 생성시, 효율적인 메모리 사용을 위해 StringBuilder를 사용한다.
- 로마 숫자 표현식의 순차 처리를 위해 변수 idx를 0으로 초기화하고, num이 0 이하가 될 때 까지 반복문을 수행하여 로마 숫자 표현식을 완성한다.
- 주어진 정수 num을 idx번째 nums 배열의 숫자를 나눈 몫만큼 반복하여 변수 sb에 idx번째 roman 배열의 문자열을 반복하고, 주어진 정수 num을 idx번째 숫자를 빼준다.
- 위의 반복이 완료되면 idx를 증가시켜 다음 로마 숫자를 이용하여 로마 숫자 표현식을 완성한다.
- 3번의 반복이 완료되면 변수 sb를 String으로 변환하여 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기