궤도

[EPPER] 12회 7번 본문

💻 현생/⛓ 알고리즘

[EPPER] 12회 7번

영이오 2020. 10. 9. 17:34

문제

 


풀이

 

9개의 숫자 중 합쳐서 100이 되는 7개의 숫자를 찾는 문제이다. 달리 말하면 해당 숫자를 뺀 총합이 100이 되는 숫자 2개를 찾는 문제다.

 

일단 9개 숫자의 총합을 구하고 그 결과에서 100을 뺀다. 그 결과를 n이라고 치면, 이제 합쳐서 n이 되는 숫자 2개를 찾으면 된다. 숫자가 여러개였으면 백트래킹을 사용했겠지만, 2개라서 그냥 for loop 2개로 했다. 찾은 즉시 break로 빠져나오고 남은 수를 출력한다.


소스코드

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int arr[9];
	int obj_num = 0;
	int x, y;

	for (int i = 0; i < 9; i++) {
		scanf("%d", &arr[i]);
		obj_num += arr[i];
	}
	obj_num -= 100; //전체 합에서 100을 빼면 목표하는 수가 나옴
	for (int i = 0; i < 8; i++) {
		for (int j = i + 1; j < 9; j++) {
			if (arr[i] + arr[j] == obj_num) { //2개 뽑아서 목표 숫자와 같은지 확인
				x = i;
				y = j;
				break;
			}
		}
	}
	for (int i = 0; i < 9; i++) { //뽑힌 수 제외하고 출력
		if (i != x && i != y)
			printf("%d ", arr[i]);
	}
}
Comments