[숫자카운팅 - Easy]

< 문제 >

  • 개요
    1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
    (※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함) (10분)

  • 예상 결과
    예상 결과는 하기 코드 실행시 예상되는 결과 값이다.
    예 1: ‘8808’에서 8의 갯수 : 3
    예 2: ‘89’에서 8의 갯수 : 1
    결과 : 4000번

< 정답풀이 >

 public class Test02 {

	private static final String result = "결과 : '%d'에서 8의 갯수 : '%d'번";

	public static void main( String[] args ) {
		// 시작시간 기록
		long startTime = System.currentTimeMillis();

		// STEP 1. TEST 데이터 준비
		int testNum = 10000;
		//int testNum = 89;

		// STEP 2. 8의 개수
		int cnt = countEight( testNum );
		System.out.println( String.format( result, testNum, cnt ) );

		long endTime = System.currentTimeMillis() - startTime;
		System.out.println( "소요시간 : " + endTime + "ms." );
	}

	/**
	 * <PRE>
	 * 8의 갯수를 찾는다.
	 * </PRE>
	 * 
	 * @param num : 숫자
	 * @retrun result : 8의 갯수
	 */
	// 모범답안
	public static int countEight( int num ) {
		int result = 0;
		char[] arr = null;

		// STEP 1. 1~num까지 숫자를 문자열로 변경하여 Char 값을 확인
		for ( int inx = 1 ; inx <= num ; inx++ ) {	
			arr = String.valueOf( inx ).toCharArray();
			for ( char ch : arr ) {
				if ( ch == '8' ) {
					result++;
				}
			}
		}
		return result;
	}
}