(c언어) 제가 짠 코딩을 간략하게 줄일 방법이 있을까요?

조회수 463회

코딩은 성공해서 잘 작동은 되는데.. 뭔가.. 제가 너무 길게 코딩한게 아닌가해서요. 코딩이 길어진게 두 개입력 값 중 작은 수, 큰 수를 구분해서 그런데, 뭔가 간단한 방법이 있을까해서요. 지도편달 부탁드립니다.

제가 구현하려는 목표

두개의 정수를 입력받아서, 작은 수부터 큰 수까지, 3의 배수이거나 5의 배수인 수들의 합(sum)과 평균(avg)을 출력

구현결과-

입력 - 10 15

출력-

sum = 37

avg = 12.3

제가 짠 코딩

    int b,c;
    int sum = 0, cnt = 0;
    double avg;

    scanf_s("%d %d", &b, &c);
    if(b<c){
    for (b; b <= c; b++) {
        if (b % 3 == 0 || b % 5 == 0) {
            sum += b;
            cnt++;
        }
    }
    }
    else if (b > c) {
    for (c; c <= b; c++) {
        if (c % 3 == 0 || c % 5 == 0) {
            sum += c;
            cnt++;
        }
    }
    }
    avg = (double)sum / cnt;
    printf("sum = %d\n", sum);
    printf("avg = %.1f\n", avg);

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    bc의 값을 비교해서 작은수를 start 큰수를 end에 넣으면 어떨까요? if, else if에 따라 다른 루프를 돌지 않고 start, end 값이 다르게 할당되어 루프에 대한 코드는 하나만 생기게 됩니다.

    추가) 물론 코드가 길어지더라도 3의 배수, 5의 배수, 15의 배수를 각각 구한 다음 3의 배수 + 5의 배수 - 15의 배수를 해주는 것이 더 좋을 것 같습니다. %연산은 시간이 많이 걸리기 때문입니다. (n의 배수를 구하는 방법은 start와 같거나 큰 수중 가장 작은 n의 배수를 %연산으로 구한 다음, 그 수에서 n씩 더해주면 됩니다.)

    • 감사합니다~ 한번 해보겠습니다^^ 배창일 2022.10.25 16:08

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)