본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.18] 소수의 개수 구하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 11.
반응형

소수의 개수 구하기


문제 설명

 

자연수의 각 자릿수 중에서 소수의 개수를 구하려 합니다.

즉 자연수를 각 자릿수 별로 나누었을 때, 2, 3, 5, 7이 몇 개 있는지 구하려 합니다..

 

자연수 number가 매개변수로 주어질 때, number의 각 자릿수 중에서 소수는 몇 개인지 return 하도록 solution 함수를 작성했습니다.

그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.


예시

 

number return
29022531 5

 


수정해야 할 코드

더보기
int solution(int number) {
    int count = 0;
    while (number >= 0) {
        int n = number % 10;
        if (n == 2 || n == 3 || n == 5 || n == 7)
            count += 1;
        number /= 10;
    }
    return count;
}

 

수정

while (number >= 0)
→ while (number != 0) // while (number > 0)

 

while문을 수행하면서 number를 10으로 나누는데, 

number가 0보다 크거나 같을 때까지 돈다면 number가 0이 될 때 number /= 10을 계속 수행해도 0이 되므로 조건을 만족해 while문을 계속 수행한다. (무한루트)

그러므로 number가 0보다 크거나, 0이 아닐 때까지 while문을 수행하도록 조건을 수정해야 한다. 

 

while (number >= 0)로 돌릴 경우

number가 10일 경우 

number number /= 10 number >= 0
10 1 O
1 0 O
0 0 O

number가 0이어도 조건을 만족해 while문을 계속 반복한다. (무한 루트)


while (number != 0)로 돌릴 경우

number가 10일 경우 

number number /= 10 number != 0
10 1 O
1 0 X

number가 0이 되어 조건을 만족하지 않아 while문을 종료한다. 

 

코드 해석 및 전체 코드

 

count ) 각 자릿수 중 소수의 개수를 return 할 변수

 

while 문 ) number가 0이 아닐 때까지 반복한다.

 

n ) number를 10으로 나누었을 때 나오는 나머지 값

 

if 문 ) n이 2이거나 3이거나 5이거나 7일 때(소수일 때) count를 1 증가한다.

 

number /= 10 ) number를 10으로 나눈다.

 

number 29022531 2902253 290225 29022 2902 290 29 2
n 1 3 5 2 2 0 9 2
if문 만족 X O O O O X X O
count   +1 +1 +1 +1     +1
/ 10 2902253 290225 29022 2902 290 29 2 0

count는 총 5가 되고, number가 0이 될 때 조건을 만족하지 않아 while문을 종료한다.

 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int number) {
    int count = 0;
    while (number != 0) {
        int n = number % 10;
        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);
}

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어

[2차] 문제8) 소수의 개수 구하기

반응형

댓글