출처: https://www.acmicpc.net/problem/12101
Approach
정수 N에 대해 1, 2, 3 합으로 이루어진 것을 찾는 문제이다.
[BOJ] 백준 9095 1, 2, 3 더하기
출처: https://www.acmicpc.net/problem/9095 Approach n이 크지 않아서 중복조합을 사용할 수 있지만 테스트 케이스 T가 주어지지 않아서 T의 크기에 따라서 결과가 다를 수 있습니다. DP 점화식을 이용한다. D
zoosso.tistory.com
오름차순으로 K번째 수식을 찾아야 하는데
DFS로 1→2→3 순으로 수식을 채워가면 오름차순 구성이 가능하다.
순열과 조합을 구하는 문제와 유사하다. → N과 M (4)
순열과 조합 (백준 N과 M 시리즈)
순열과 조합 순열(Permutation) / 조합(Combination)에서 개수를 구하는 경우에는 ▶ P(n, r) = n × (n - 1) × (n - 2) × ... × (n - r - 1) = n! / (n - r)! 상황에 따라서는 주어지는 Data가 나올 수..
zoosso.tistory.com
[BOJ] 백준 15652 N과 M(4)
출처: https://www.acmicpc.net/problem/15652 Input 4 2 Output 1 1 1 2 1 3 1 4 2 2 2 3 2 4 3 3 3 4 4 4 중복을 허용하는 조합 문제이다. 중복 없는 조합과 문제 [BOJ] 15650 N과 M (2)와 달리 기존의 선택..
zoosso.tistory.com
DFS 함수에 수식을 이루는 vector와 원소들의 합
- 원소들의 합이 N보타 크면 return
- K번째 수식을 찾은 경우 return
#include <iostream>
#include <vector>
using namespace std;
int N, K, cnt;
bool flag;
void DFS(vector<int>& v, int sum)
{
if (sum > N) return;
if (flag) return;
if (sum == N)
{
cnt++;
if (cnt == K)
{
for (int i = 0; i < v.size()-1; i++)
{
printf("%d+", v[i]);
}
printf("%d\n", v[v.size()-1]);
flag = true;
}
return;
}
for (int i = 1; i <= 3; i++)
{
v.push_back(i);
DFS(v, sum + i);
v.pop_back();
}
}
int main()
{
// freopen("input.txt", "r", stdin);
scanf("%d %d", &N, &K);
vector<int> v;
DFS(v, 0);
if(!flag) printf("-1\n");
}
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1032 명령 프롬프트 (0) | 2021.08.23 |
---|---|
[BOJ] 백준 1026 보물 (0) | 2021.08.22 |
[BOJ] 백준 9095 1, 2, 3 더하기 (0) | 2021.08.09 |
[BOJ] 백준 1024 수열의 합 (0) | 2021.08.07 |
[BOJ] 백준 1110 더하기 사이클 (0) | 2021.08.06 |
댓글