[Algorithm] 1940 주몽

gunggme·2023년 11월 21일

알고리즘

목록 보기
16/42

시작

이 문제는 전 문제에 비해 쉽게 풀릴것 같다. 그렇다면 한번 문제를 봐보자. 첫째줄엔 재료의 개수(N), 둘째줄엔 만들 수 있는 재료의 수(M) 그 다음줄엔 N개의 재료들이 가진 번호들을 가진 재료들이다. 그렇다면 N개의 재료들이 가진 번호들이 M과 같아진다면 제작을 할 수 있다는 것을 알 수 있는데. 한번 이 것을 가지고 알고리즘을 제작해보자.

알고리즘

  1. N개의 재료들의 합이 M이 되면 +1
  2. 만약 안되면 계속 넘기기

이 간단한 알고리즘을 가지고 제작을 할 수 있는데. cpp이라 그런지 간단해 보이지만, 어렵게 보이는건 함정

코드

#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>

using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int a, armorMake, result = 0;
	cin >> a;
	vector<int> arr(a);
	cin >> armorMake;
	for (int i = 0; i < a; i++) {
		cin >> arr[i];
	}
	for (int i = 0; i < a; i++) {
		for (int j = i + 1; j < a; j++) {
			// i번째와 j번째를 더하면서 만들 수 있는지 확인
			int sum = arr[i] + arr[j];
			if (sum == armorMake) {
				result++;
				continue;
			}
		}
	}
	cout << result;
}
profile
안녕하세요!

0개의 댓글