알고리즘 : 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;
}