[C] 100미만의 연속된 짝수 두 자릿수를 곱한 결과와 3개의 수 구하기

Haeun Noh·2022년 10월 24일
0

C언어_예제

목록 보기
14/19

1024


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미만짝수라고 되어있습니다. 즉, i10~98까지의 범위를 가지게 됩니다.

따라서 i10의 초깃값으로 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로 해도 되겠지만 그럴 경우 i98일 때 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을 사용합니다.



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글