티스토리 뷰

 

 

구름에듀 5차 5번 문제

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

주어진 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int a, int b) {
    int answer = 0;

    for (int i = 1; i <= b; i++) {
        if ((a * i) % b == 0) {
            answer = b * i;
            break;
        }
    }

    return answer;
}
int main() {
    int a = 4;
    int b = 6;
    int ret = solution(a, b);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

 

 

기존 코드 실행 결과

a b return
4 6 18

 

 

 

코드 문제점

문제를 구조적으로 살펴보면,
결국 첫번째 n일장의 n과 두번째 n일장의 n의 
최소공배수를 구하면 된다.

하지만 이를 구하는 과정에서
(a*i)%b==0일때 a*i가 최소공배수인데,
제시된 코드에서는 b*i로 이보다 더 큰 배수를 return하고 있다.

따라서 answer = b * i를 answer = a * i로 고치면 
정상적인 결과가 나온다.

 

 

 

 

 


 

 

 

 

 

 

완성 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int a, int b) {
    int answer = 0;

    for (int i = 1; i <= b; i++) {
        if ((a * i) % b == 0) {
            answer = a * i;
            break;
        }
    }

    return answer;
}
int main() {
    int a = 4;
    int b = 6;
    int ret = solution(a, b);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

 

예시

a b return
4 6 12

 

 

 

 

 

 

 

 

 


GroomEdu

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

 

 

 

 

 

댓글