본문으로 바로가기
입력받은 숫자를 우리가 읽는소리로 출력하는 코드를 작성하시오. (입력받을 숫자 : 1 ~ 99999 사이)
ex)
2001 => 이천일
10500 => 만오백
5432 => 오천사백삼십이
<내가 제출한 코드>
public String solution(int num) {
String answer = "";
int remainder = 0, digit = 1; // remainder : 나머지, digit : 자리수
HashMap<Integer, String> numberMap = new HashMap<Integer, String>(); // 값 Map
HashMap<Integer, String> digitMap = new HashMap<Integer, String>(); // 자리수 Map
numberMap.put(1, "");
numberMap.put(2, "이");
numberMap.put(3, "삼");
numberMap.put(4, "사");
numberMap.put(5, "오");
numberMap.put(6, "육");
numberMap.put(7, "칠");
numberMap.put(8, "팔");
numberMap.put(9, "구");
digitMap.put(10000, "만");
digitMap.put(1000, "천");
digitMap.put(100, "백");
digitMap.put(10, "십");
digitMap.put(1, "");
while (num > 0) {
remainder = num%10;
num = num/10;
if (remainder != 0) { // 나머지가 0이 아니면
if (remainder == 1 && digit == 1) { // 일의 자리수가 1 이면
answer = "일";
}
else {
// answer 변수에 우리가 읽는소리로 변환된 string 값이 append 된다. remainder 값과 digit 값을 Map의 Key로 이용해서 string을 만든다.
answer = numberMap.get(remainder) + digitMap.get(digit) + answer;
}
}
digit = digit * 10; // 자리수 하나씩 올림
}
return answer;
}