100미만의 연속된 두 자릿수의 짝수 3개를 곱하였더니, 4
****
2가 되었다. 이 세 개의 수는 어떤 수인지, 그리고 결과는 얼마인지 구하는 프로그램을 for문을 이용해서 작성하시오.
//ex)
세 개의 수 : 74, 76, 78
세 개의 수의 결과 : 438672
두 소스 코드 모두 정답입니다.
첫 번째로 보이는 소스코드는 제가 처음으로 짠 코드이고,
두 번째로 보이는 소스코드는 좀 더 간결하게 나타낸 코드입니다.
소스 풀이는 두 번째로 보이는 소스코드로 하겠습니다.
#include <stdio.h>
int main(void) {
int num[3] = {0}, result = 0;
for (int i = 14; i < 100; i+=2) {
if (((i - 4) * (i - 2) * i) / 100000 == 4 && ((i - 4) * (i - 2) * i) % 10 == 2) {
num[0] = i - 4;
num[1] = i - 2;
num[2] = i;
result = (num[0] * num[1] * num[2]);
break;
}
}
printf("세 개의 수 : %d, %d, %d\n", num[0], num[1], num[2]);
printf("세 개의 수의 합계 : %d", result);
return 0;
}
#include <stdio.h>
int main(void) {
for (int i = 14; i < 100; i+=2) {
if (((i - 4) * (i - 2) * i) / 100000 == 4 && ((i - 4) * (i - 2) * i) % 10 == 2) {
printf("세 개의 수 : %d, %d, %d\n", i-4, i-2, i);
printf("세 개의 수의 결과 : %d", (i - 4) * (i - 2) * i);
return 0;
}
}
return 0;
}
for (int i = 14; i < 100; i+=2) {
문제에서의 조건을 보면 i
는 두 자릿수
의 100미만
의 짝수
라고 되어있습니다. 즉, i
는 10~98
까지의 범위를 가지게 됩니다.
따라서 i
는 10
의 초깃값으로 100
이전까지 i+=2
만큼 증가시켜야 하는데 왜 i
의 초깃값이 14
인지는 다음의 소스코드를 보며 설명하겠습니다.
if (((i - 4) * (i - 2) * i) / 100000 == 4 && ((i - 4) * (i - 2) * i) % 10 == 2) {
세 자리 수는 i-4
i-2
i
로 주었습니다. 왜일까요?
i
i+2
i+4
로 해도 되겠지만 그럴 경우 i
가 98
일 때 100
의 범위를 초과하기 때문에 조건식을 변경해주어야 합니다.
저는 이런 방식으로 했으나 다른 방법도 정답이니 다양하게 도전해보시길 바랍니다.
세 자리수의 곱을 100000
으로 나누었을 때의 몫은 4
이고, 10
의 나머지는 2
이기 때문에 두 조건을 만족하도록 if문
을 사용하였습니다.
printf("세 개의 수 : %d, %d, %d\n", i-4, i-2, i);
printf("세 개의 수의 결과 : %d", (i - 4) * (i - 2) * i);
return 0;
if문
의 조건을 통과하였다면 바로 세 개의 수인 i-4
i-2
i
를 출력한 뒤,
세 개의 수의 결과인 세 개의 수의 곱을 출력합니다.
그 후 바로 return 0
를 사용하여 결과를 구하였다면 바로 프로그램을 종료할 수 있도록 합니다.
}
}
return 0;
}
앞의 조건에는 결과가 나와 return 0
가 가능했지만 혹시라도 다른 조건 사용시에 if문
의 조건을 만족하지 못 할 수도 있기 때문에 for문
밖에서 한 번 더 return 0
을 사용합니다.