문제:
1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?
8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
(※ 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)
출처: codingdojang.com/scode/393#answer-filter-area
Idea:
이건 너무 쉬운 문제라 코드로 작성하기 민망하다.
다만, 구글의 입사문제였기 때문에 창의력을 발휘하는 지의 여부를 확인하는 문제였을 듯하다.
따라서, 코드로 형식적으로 푼 답의 아래에 있지만, 경우의 수를 이용해서 풀이할 수도 있을 것 같다.
10000은 8이 없으므로 1부터 9999까지의 수, 즉 모든 4자리 자연수 중에서 8의 개수를 센다.
한 자리에 8이 들어가고, 나머지 3자리에 어떤 수든 들어갈 수 있다.
따라서, 한 자리에 8이 들어가는 경우의 수는 10의 3제곱, 1000이다.
총 4자리가 있기 때문에 1000*4=4000의 경우의 수로 계산할 수 있다.
Code:
// count the number of 8s in natural numbers from 1 to 10000
public class Count_NumberOf_8s {
public static void main(String[] args) {
int count = 0;
int limit = 10000;
for(int i = 1; i < limit; i++) {
int num = i;
while(num != 0) {
if(num%10 == 8)
count++;
num /= 10;
}
}
System.out.println("1부터 "+limit+"까지의 8의 개수는 "+count+"이다.");
}
}
'Java' 카테고리의 다른 글
[Java] Baekjoon_P10809 Position of Alphabet (0) | 2020.12.20 |
---|---|
[Java] Baekjoon_P11720 문자열의 각 자리 정수 합 구하기. (0) | 2020.12.20 |
[Java] Java 연습문제: Self Number 탐색 프로그램 (0) | 2020.12.16 |
[Java] enum과 switch문 관련 예제 (0) | 2020.12.16 |
[Java 연습문제] String class의 method연습 (0) | 2020.12.10 |