본문 바로가기
백준(C언어)/23년 2월

백트랙킹 - 15651번

by C0MPAS 2023. 2. 24.

2월 24일(금) - 백트랙킹(15651번)

 

15651번: N과 M (3)

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

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

최초 생각 정리

- 15649번에서 중복을 continue로 제외하던 부분의 코드만 삭제하면 풀이가 진행될 것 이라고 생각함

- 2번째 for문 안에서 if(visited[i]) continue; 부분을 삭제하는 방향으로 풀이를 진행

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

x

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)

#include <stdio.h>

int N, M;
int visited[10] = { 0, };
int result[10] = { 0, };

void DFS(int index)
{
	if (index == M)
	{
		for (int i = 0; i < M; i++)
		{
			printf("%d ", result[i]);
		}
		printf("\n");
	}

	else
	{
		for (int i = 1; i <= N; i++)
		{
			result[index] = i;
			visited[i] = 1;
			DFS(index + 1);
			visited[i] = 0;			
		}
	}
}

int main(void)
{
	scanf("%d %d", &N, &M);
	DFS(0);
	return 0;
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

'백준(C언어) > 23년 2월' 카테고리의 다른 글

입출력과 사칙연산 - 11382번  (0) 2023.02.28
백트랙킹 - 15652번  (0) 2023.02.27
2차원 배열 - 10798번  (0) 2023.02.23
백트랙킹 - 15650번  (0) 2023.02.22
백트랙킹 - 15649번  (0) 2023.02.21

댓글