cospro 2급 8번 문제
소수의 갯수 구하기
문제 설명
자연수의 각 자릿수 중에서 소수는 몇 개인지 구하려 한다.
즉, 자연수를 각 자릿수별로 나눴을 때, 2, 3, 5, 7이 몇개 있는지 구하려 한다.
예를 들어 자연수가 29022531일 때, 각 자릿수 중 소수의 위치는 다음과 같다.
'2' 90 '2' '2' '5' '3' 1
따라서 소수의 개수는 총 5개이다.
자연수 number가 매개변수로 주어질 때, number의 각 자릿수 중 소수는 몇개인지 return하도록 solution 함수를 완성한다.
매개변수 설명
자연수 number가 solution 함수의 매개변수로 주어진다.
number는 1 이상 1000000000 이하의 자연수이다.
return 값 설명
number의 각 자릿수 중 소수는 몇개인지 return 한다.
예시
코드설명
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int number) {
int count = 0; //소수의 갯수
while(number > 0){
int n = number % 10; //number의 자릿수 구하기
if (n == 2 || n == 3 || n == 5 || n == 7)
count += 1;
number /= 10; //다음 자릿수로 넘어가기(오른쪽에서 왼쪽)
}
return count;
}
int main() {
int number = 29022531;
int ret = solution(number);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
while문을 실행할 때 number >= 0으로 주게 되면 number가 0인 경우에도 실행하게 된다. 0인 경우에도 실행할 경우 number=0일 때 number /=0을 실행하면 계속해서 0이 나오기 때문에 무한루프가 된다. 무한루프를 도는 프로그램은 프로그램이 아니기 때문에 주의해서 풀어야한다.
'cospro2급 > cospro_2차' 카테고리의 다른 글
2021-05-12 (0) | 2021.05.12 |
---|---|
2021-05-12 (0) | 2021.05.12 |
2021-05-11 (0) | 2021.05.11 |
2021-05-10 (0) | 2021.05.10 |
2021-05-10 (0) | 2021.05.10 |