#문제)
숫자를 한글로 변환하는 코드를 작성하여라
입력 : 2536
출력 : 이천오백삼십육
먼저 자리수에 대한 한글화, 숫자에 대한 한글화 배열을 만들어야한다.
기본적으로 한글로 출력하려면 먼저 자리수에 숫자에 대한 한글 변환, 자리수에 대한 한글변환이 이뤄지는 것을 알 수 있다.
또한, 0의 경우 한글화할 필요 없고, 첫번째 자리수는 한글화할 필요가 없다는 것을 알 수 있다.
구현방법은 먼저 자리수를 알아낸 후 자리수가 0보다 크거나 작을때까지 반복한다.
입력된 값을 자리수만큼 나누고 나눈 값을 이용해 한글화 처리를 한다. (배열 인덱스 접근)
또한 자리수를 이용해 한글화 처리를 한다. (자리수 배열 인덱스 접근)
*자리수를 알아 내고 싶은데, String일 경우 length로 길이 알아 낸 후 Math.pow(10, length-1)하면 자리수를 구해낼 수 있는뎅
int형이면 어떻게 알아 낼 수 있는지 몰랐는데 찾았다. Math.log10(value)+1 로 구하면 된다.
package dataStructure.prediction;
public class NumberToKoreanLabel {
//number convert korean
private String[] number_labels = { "", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구"};
private String[] range_labels = {"", "십", "백", "천", "만", "십만", "백만", "천만", "억", "십억"};
public void execute(String value) {
int rangeCount = value.length()-1;
int rawValue = Integer.valueOf(value);
StringBuilder result = new StringBuilder();
while(rangeCount >= 0) {
int mod = (int)Math.pow(10, rangeCount);
result.append(number_labels[rawValue/mod]);
if(rawValue/mod > 0) {
result.append(range_labels[rangeCount]);
}
rawValue = rawValue % mod;
rangeCount--;
}
System.out.println(result.toString());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
NumberToKoreanLabel koreanLabel = new NumberToKoreanLabel();
koreanLabel.execute(String.valueOf(Integer.MAX_VALUE));
}
}
'lecture.js > algorithm.log' 카테고리의 다른 글
#013 선택 정렬 (0) | 2017.07.18 |
---|---|
#012 버블 정렬 (0) | 2017.07.18 |
#010 소인수분해 (1) | 2017.07.12 |
#009 소수 판별 (0) | 2017.07.12 |
#008 고속버스 배치 (0) | 2017.07.12 |