알고리즘 : C++/BaekJoon

백준 1940번 - 주몽

동 노이만 2023. 5. 19. 22:08

https://www.acmicpc.net/problem/1940

 

1940번: 주몽

첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고

www.acmicpc.net

 

풀이 과정

 n개의 재료를 입력받고 두 재료의 합이 m이 되는 경우의 수를 구하는 문제이다. 문제에서는 '만들 수 있는 갑옷의 수'라고 했지만, 재료의 번호는 고유하다는 뜻이 재료가 번호 당 하나씩만 있다는 뜻이라 문제가 모호했다고 생각한다. for문을 사용해 2개의 재료 조합을 탐색하며 합이 m이 되는 경우 cnt++을 수행했다.

 

느낀 점

 두 번째 푸는 문제라 바로 풀었지만, 아무리 봐도 문제가 모호해서 헷갈릴 법하다. 질문 게시판에도 비슷한 글이 있는 걸로 봐서는 수정이 필요할 듯하다.

 

#include<bits/stdc++.h>
using namespace std;

vector<int> input;
int n, m, temp, cnt;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	//입력
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> temp;
		input.push_back(temp);
	}
	//탐색
	for (int i = 0; i < n - 1; i++) {
		for (int j = i + 1; j < n; j++) {
			if (input[i] + input[j] == m) cnt++;
		}
	}
	//출력
	cout << cnt <<"\n";

	return 0;
}