diff --git "a/JHLEE325/202602/01 BOJ G5 \353\241\234\353\247\210 \354\210\253\354\236\220.md" "b/JHLEE325/202602/01 BOJ G5 \353\241\234\353\247\210 \354\210\253\354\236\220.md" new file mode 100644 index 00000000..417daadd --- /dev/null +++ "b/JHLEE325/202602/01 BOJ G5 \353\241\234\353\247\210 \354\210\253\354\236\220.md" @@ -0,0 +1,62 @@ +```java +import java.io.*; +import java.util.*; + +public class Main { + static Map romanMap = new HashMap<>(); + + static int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + static String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; + + public static void main(String[] args) throws IOException { + initMap(); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + String s1 = br.readLine(); + String s2 = br.readLine(); + + int sum = romanToArab(s1) + romanToArab(s2); + + System.out.println(sum); + System.out.println(arabToRoman(sum)); + } + + static void initMap() { + romanMap.put('I', 1); + romanMap.put('V', 5); + romanMap.put('X', 10); + romanMap.put('L', 50); + romanMap.put('C', 100); + romanMap.put('D', 500); + romanMap.put('M', 1000); + } + + static int romanToArab(String s) { + int total = 0; + for (int i = 0; i < s.length(); i++) { + int current = romanMap.get(s.charAt(i)); + + if (i + 1 < s.length() && current < romanMap.get(s.charAt(i + 1))) { + total -= current; + } else { + total += current; + } + } + return total; + } + + static String arabToRoman(int num) { + StringBuilder sb = new StringBuilder(); + int i = 0; + while (num > 0) { + if (num >= values[i]) { + sb.append(symbols[i]); + num -= values[i]; + } else { + i++; + } + } + return sb.toString(); + } +} +```