문제
정답 코드
#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