백준 15651 N과 M (3)

aiden·2025년 11월 3일

백준 문제풀이

목록 보기
4/11

문제:
https://www.acmicpc.net/problem/15651

나의 풀이:

#include <iostream>
#include <algorithm>
using namespace std;

int n, m;
int arr[8] = { 1, 1, 1, 1, 1, 1, 1};

/*
1~N까지 자연수중 M개를 고르기
1 1 1
1 1 2
1 1 ...
1 1 N
1 2 1
1 2 2
...
N N N
*/


void backtrack(int k) {

	if (k == m) { // 배열 다 채우면
		for (int i = 0; i < m; i++) {
			cout << arr[i] << " "; // 출력
		}
		cout << "\n";
		return;
	}

	for (int i = 1; i <= n; i++) { // 범위 : 1~n
		arr[k] = i; // k = 0부터 시작해서 재귀호출할것
		backtrack(k + 1);
	}
}
int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> m;
	backtrack(0);
	return 0;
}

시간복잡도가 큰 코드가 아닌데 첫 제출에서는 시간초과가 떠서 당황했다. 알고리즘 문제가 아닌 단순 입력 처리시간 문제로 보여져 ios_base::sync_with_stdio(false)와 cin.tie(NULL)을 사용해주었다.

profile
All's well that ends well

0개의 댓글