https://www.acmicpc.net/problem/1940
백준 1940 문제입니다
해당 문제는 2개의 조합으로 n의 합이되는 경우를 찾는 문제입니다
순서가 상관이없는 문제이므로 Combination 문제 이며
nC2 공식이 적용되는 문제입니다
#include <iostream>
using namespace std;
//2개 재료 합 M
//재료의 "갯수"
//필요한 M "수치"
//고유번호 //2개로 만듬
//핵심----
// -> 순서 상관x -> Combination nC2 (조합)
// -> 순서 상관o -> Permutation nP2 (순열)
//조합종류의 경우가 3가지 조합까지는 for문으로 구현이 좋음
//--nC2의 경우--
int matterSize, needCount;
int matterArr[15001];
int cnt;
int main()
{
cin >> matterSize >> needCount;
for (int i = 0; i < matterSize; i++)
cin >> matterArr[i];
for (int i = 0; i < matterSize; i++)
{
for (int j = i + 1; j < matterSize; j++)
{
if (matterArr[i] + matterArr[j] == needCount)
cnt++;
}
}
cout << cnt << "\n";
}
//---
만약 해당문제의 답은 아니지만 조합의 순서가 상관이없지않고 상관이 있는 문제가된다면
nC2 Combination문제에서 nP2 Permutation문제로바뀝니다
순열의 경우 이런식으로 변경됩니다
//--nP2의 경우--
int matterSize, needCount;
int matterArr[15001];
int cnt;
int main()
{
cin >> matterSize >> needCount;
for (int i = 0; i < matterSize; i++)
cin >> matterArr[i];
for (int i = 0; i < matterSize; i++)
{
for (int j = 0; j < matterSize; j++)
{
if (i != j) //자기자신제외시키기
{
if (matterArr[i] + matterArr[j] == needCount)
cnt++;
}
}
}
}
난이도 : 실버4의 쉬운문제입니다
조합을 공부하기 딱 좋은 문제인거같습니다
'C++ 백준' 카테고리의 다른 글
| 백준 - 4375 1 c++ (모듈러연산 방식) (0) | 2025.12.05 |
|---|---|
| 백준 - 3986 좋은 단어 c++ (0) | 2025.12.03 |
| 백준 (11655, 9996, 2559) (0) | 2025.11.16 |
