본문 바로가기
backjoon/DFS && BFS

백준 15650 - N과M(2) c언어

by 정구지개발자 2023. 1. 14.
728x90

https://www.acmicpc.net/problem/15650

 

15650번: N과 M (2)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

1. 이전에 풀었던 N과M(1)과 매우 유사하다 단지 오름차순으로 출력이 되어야한다는것이 다르다.

2. 오름차순이니까 prev라는 변수를 따로 선언해서 prev = result[count - 1] 이라는 조건으로 오름차순을 만들어준다.

3. i = prev 조건으로 인해 while문이 돌아가면서 오름차순이 만들어진다. 

4. 나머지는 전에 했던 N과M(1)의 내용과 동일하다.

 

나의답안)

#include <stdio.h>

void	DFS2(int *result, int count, int N, int M)
{
	int 	i, j, flag;
	int	prev;

	if (count == M)
	{
		i = 0;
		while (i < M)
		{
			printf("%d ", result[i]);
			i++;
		}
		printf("\n");
	}
	else
	{
		prev = 1;
		if (count > 0)
			prev = result[count - 1];
		i = prev;
		while (i <= N)
		{
			j = 0;
			flag = 0;
			while (j < count)
			{
				if (result[j] == i)
					flag = 1;
				j++;
			}
			if (flag == 0)
			{
				result[count] = i;
				DFS2(result, count + 1, N, M);
			}
			i++;
		}
	}
}

int	main()
{
	int	N, M;
	scanf("%d %d", &N, &M);

	int	result[M];
	DFS2(result, 0, N, M);
	return (0);
}
728x90

'backjoon > DFS && BFS' 카테고리의 다른 글

백준 1697 java  (0) 2024.02.05
백준 15651 - N과M(3) c언어  (0) 2023.01.17
백준 15649번 -N과M(1) c언어  (0) 2023.01.11