로마 숫자 표기를 정수형으로 변환하는 프로그램을 작성하세요.
로마 숫자 표기법은 I, V, X, L, C, D, M 으로 이루어져있다.
로마 숫자
로마숫자 | 정수형 |
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
로마 숫자 표기 방식
입력 | 출력 |
"III" | 3 |
"IV" | 4 |
"VI" | 6 |
"XIII" | 13 |
"XXVI" | 26 |
"MCMXCIV" | 1994 |
public static void solution(String s) {
HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
hm.put('I',1);
hm.put('V',5);
hm.put('X',10);
hm.put('L',50);
hm.put('C', 100);
hm.put('D', 500);
hm.put('M', 1000);
int sum = 0;
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length-1; i++) {
if (hm.get(arr[i])<hm.get(arr[i+1])){
sum -= hm.get(arr[i]);
} else {
sum += hm.get(arr[i]);
}
}
sum += hm.get(arr[arr.length-1]);
System.out.println(sum);
}
public static void solution(String s) {
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("I",1);
hm.put("V",5);
hm.put("X",10);
hm.put("L",50);
hm.put("C", 100);
hm.put("D", 500);
hm.put("M", 1000);
char []roman = s.toCharArray();
int suma = 0;
for (int i = 0; i< roman.length; i++){
//I 부분 구분
if(roman[i]=='I'&& i < roman.length-1){
if (roman[i+1]=='V'){
suma += hm.get("V")-hm.get("I");
i++;
} else if (roman[i+1]=='X'){
suma += hm.get("X")-hm.get("I");
i++;
} else{
suma +=hm.get("I");
}
} else if (roman[i]=='I'){
suma++;
// X 구현
} else if (roman[i]=='X'&& i < roman.length-1){
if (roman[i+1]=='L'){
suma += hm.get("L")-hm.get("X");
i++;
} else if (roman[i+1]=='C'){
suma += hm.get("C")-hm.get("X");
i++;
} else {
suma += hm.get("X");
}
// C 구현
} else if (roman[i]=='C'&& i < roman.length-1) {
if (roman[i + 1] == 'D') {
suma += hm.get("D") - hm.get("C");
i++;
} else if (roman[i + 1] == 'M') {
suma += hm.get("M") - hm.get("C");
i++;
} else {
suma += hm.get("C");
}
// M 구현
} else if (roman[i]=='M') {
suma +=hm.get("M");
// V 구현
} else if(roman[i]=='V'){
suma +=hm.get("V");
// L구현
}else if (roman[i]=='L'){
suma +=hm.get("L");
// D 구현
} else if (roman[i]=='D') {
suma += hm.get("D");
}
}
System.out.println(suma);
}
[Java] 기초수학 - 순열 for문 (0) | 2023.01.13 |
---|---|
[Java] 연습문제5 - 배열 내 가장 넓은 면적 구하기 (0) | 2023.01.08 |
[Java] 연습문제4 - 여러가지 별 찍기 (0) | 2023.01.08 |
[Java] 연습문제3 - Replace 없이 특정 문자열 원하는 문자로 바꾸기 (1) | 2023.01.07 |
[Java] 연습문제2 - ASCII코드 대소문자 상호 변환 (1) | 2023.01.07 |
댓글 영역