티스토리 뷰
입출력 예제
num : 1994
return : MCMXCIV
해결 방법
로마자를 해결하기 위해서는 로마자의 규칙을 알아야 합니다
1부터 10까지 로마자로 표현하면
I |
II |
III |
IV |
V |
VI |
VII |
VIII |
IX |
X |
여기서 저는 10, 9, 5, 4, 1, 이렇게 구분을 지었습니다.
그럼 1000의 자리수부터 구분 지으면
1000 | 900 | 500 | 400 | 100 | 90 | 50 | 40 | 10 | 9 | 5 | 4 | 1 |
M | CM | D | CD | C | XC | L | XL | X | IX | V | IV | I |
이렇게 구분 지을 수 있고 이것을 거스름돈 문제 처럼 정수값이 해당위치에 나눠질수 있다면 나누는 몫만큼 문자를 넣어주면 됩니다.
소스 코드
public class Solution { public String intToRoman(int num) { StringBuilder answer=new StringBuilder(""); int[] value= {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] symbol= {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; for(int i=0;i<value.length;i++) { if(num/value[i]>0) { for(int k=0;k<num/value[i];k++) { answer.append(symbol[i]); } num%=value[i]; } } return answer.toString(); } }
'알고리즘 > LeetCode(JAVA)' 카테고리의 다른 글
[LeetCode/알고리즘] median of two sorted arrays (0) | 2019.02.08 |
---|