DigitGroupAsInt.java
package digitGroup; import java.util.Stack; /** * 10진수를 입력받아, 천(1000)자리 구분자를 추가하는 프로그램. * (숫자 타입 처리 및 수행 시간 측정) */ public class DigitGroupAsInt { public static void main(String args[]) { int loopCount = 1000000; for(int idx=0; idx<10; idx++) { long startMilliTime = System.currentTimeMillis(); benchmark(10, 10, loopCount); long endMilliTime = System.currentTimeMillis(); System.out.println( loopCount + ";" + (endMilliTime - startMilliTime)); loopCount += 1000000; } } private static void benchmark(int startNum, int interval, int loopCount) { int inputNumber = startNum; for(int cnt=0; cnt<loopCount; cnt++) { convert(inputNumber); inputNumber += interval; } } private static String convert(int number) { final int DECIMAL_NUMBER = 10; final char THOUSANDS_SEPARATOR = ','; Stack<Character> digitStack = new Stack<Character>(); StringBuilder sb = new StringBuilder(); int quotient, spare, count = 0; do { // 몫과 나머지 계산 quotient = number / DECIMAL_NUMBER; spare = number % DECIMAL_NUMBER; // 몫을 n 에 재할당, 나머지는 스택에 추가 number = quotient; digitStack.push(Character.forDigit(spare, 10)); // 3개의 숫자를 추가했다면, 구분자를 버퍼에 추가 if (++count == 3 && quotient > 0) { digitStack.push(THOUSANDS_SEPARATOR); count = 0; } } while (quotient > 0); // 스택에 저장된 숫자를 꺼내 문자열 버퍼에 추가 while (!digitStack.empty()) { sb.append(digitStack.pop()); } return sb.toString(); } }