Algorithm/📖Baekjoon

#6603 로또

yewoneeee 2022. 8. 2. 21:11

# 문제

# 입력 및 출력

# 풀이

스택을 사용하려다가 출력이 불편해서 그냥 배열을 사용했다

로또 숫자를 고를 땐 집합 s에서 현재 보고 있는 숫자보다 큰 인덱스를 가진 숫자만 확인하기 때문에

재귀함수의 매개변수로 인덱스 변수 start를 넘겨줘서 다음에 확인할 숫자의 범위를 설정함

#include <iostream>
using namespace std;
int lotto[6];
int s[13];
int k;

void print() { // 로또 출력용 함수
	for (int i = 0; i < 6; i++) {
		cout << lotto[i] << " ";
	}
	cout << "\n";
}

void rec(int num, int size,int start) { 
	lotto[size] = num;
	if (size == 5) { // 6개의 숫자를 고른 경우 출력
		print();
		return;
	}
	for (int i = start; i < k; i++) {
		rec(s[i], size + 1, i + 1);
	}
}

int main() {
	while (1) {
		cin >> k;
		if (k == 0) break;
		for (int i = 0; i < k; i++) {
			cin >> s[i];
		}
		for (int i = 0; i <= k - 6; i++) {
			rec(s[i], 0, i + 1);
		}
		cout << "\n";
	}
}

 

찾아보니까 보통 dfs로 많이 푸는데 풀이를 보니까 내 코드와 비슷한 것 같다