문제
정답 코드
#include <bits/stdc++.h>
using namespace std;
int n,m;
int ret[8];
int vis[8];
void func(int s,int nu)
{
if (nu == m)
{
for(int i=0;i < m;i++) cout << ret[i]<< " ";
cout << "\n";
return ;
}
for (int i = s+1;i <= n;i++)
{
ret[nu] = i;
func(i,nu+1);
}
}
int main()
{
cin >> n >> m;
func(0,0);
}
문제 풀이의 흐름
- 입력을 받는다.
- 깊이에 도달하기 전까지 받는다. 오름 차순이라서 처음에는 0부터 넣어주고 아에 더 낮은 경우 루프를 돌지 않게 했다.
- 더 낮은경우 루프를 돌지 않으니까 절대 중복은 있을 수 없어서 중복 검사는 따로 해주지 않았다.
걸린시간
- dfs의 기초중에 기초문제!!
- 15분
반성 및 고찰
이전에는 많이 쉬운 문제여도 빠르게 풀어야한다는 강박과 집중력 부족으로 오래 걸렸으나 이 문제는 다행히 천천히 침착하게 문제를 풀어서 쉽게 해결했다.
Uploaded by N2T
728x90
'알고리즘 > 백준-실버' 카테고리의 다른 글
백준 2003번 수들의 합2 (C++) (0) | 2023.10.13 |
---|---|
백준 11660번 구간 합 구하기 5(C++) (0) | 2023.10.13 |
백준 1182번 부분수열의 합(C++) 알고리즘을 풀며 반성.. (2) | 2023.01.16 |
백준 1189번 컴백홈 dfs(C++) (0) | 2023.01.10 |
백준 1325번 효율적인 해킹(C++) (2) | 2023.01.09 |