< 문제 >
-
개요
1부터 숫자를 이어나가되, 3, 6, 9가 들어가는 숫자가 나오면 숫자를 말하지 말고 박수를 쳐을 해야 한다.
33, 333과 같이 3, 6, 9가 여러 개 들어갈 경우 여러 번 해야 한다(예: 36, 33 → 박수 2번)
10,000까지 했다면 박수를 친 총 횟수는 얼마인가? -
예상 결과
예상 결과는 하기 코드 실행시 예상되는 결과 값이다.
예 1: ‘40’까지 3,6,9 박수친 수 : ‘22’번
예 2: ‘10000’까지 3,6,9 박수친 수 : ‘12000’번
< 정답풀이 >
public class Test04 {
private static final String result = "결과 : '%d'까지 3,6,9 박수친 수 : '%d'번";
public static void main( String[] args ) {
// 시작시간 기록
long startTime = System.currentTimeMillis();
// STEP 1. TEST 데이터 준비
int testNum = 10000;
// STEP 2. 3,6,9가 나올때 박수를 친 수
int cnt = CountingSUK( testNum );
System.out.println( String.format( result, testNum, cnt ) );
long endTime = System.currentTimeMillis() - startTime;
System.out.println( "소요시간 : " + endTime + "ms." );
}
/**
*
* <PRE>
* 3,6,9가 나올때 총 박수를 친 수를 구한다.
* </PRE>
*
* @param num
* @return
*/
public static int CountingSUK( int num ) {
// STEP 1. 3,6,9인 경우에만 박수를 친다.
int clapCnt = 0;
for ( int inx = 1 ; inx <= num ; inx++ ) {
String regex = "[0-2]|[4-5]|[7-8]";
clapCnt += String.valueOf( inx ).replaceAll( regex, "" ).length();
}
return clapCnt;
}