알고리즘/백준-실버

백준 15650번 N과 M(2) (C++)

뜨거운 개발자 2023. 1. 17. 20:43

문제

15650번: N과 M (2)
https://www.acmicpc.net/problem/15650

정답 코드

#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
반응형