문제

문제 링크

어떻게 접근할 것인가

  • 고민하다가 DFS를 이용하기로 했다.
  • 사이즈가 6인 어레이를 하나 만들고 DFS를 이용해서 숫자를 어레이를 하나 넣어주면서 6개가 차면 이를 출력한다.

코드

#include <cstdio>
int v[6], arr[50], k;
void dfs(int begin, int cnt){
    if(cnt == 6){
        for(int i = 0; i < 6; i++)printf("%d ", v[i]);
        printf("\n");
        return;
    }
    for(int i = begin; i < k; i++){
        v[cnt] = arr[i];
        dfs(i + 1, cnt + 1);
    }
}

int main(){
    while(1){
        scanf("%d", &k);
        if(k == 0)break;
        for(int i = 0; i < k; i++)scanf("%d", &arr[i]);
        dfs(0, 0);
        printf("\n");
    }
    
}

느낀점

  • 혹시나 해서 돌려봤는데 됐다 ㅎㅎ
  • 그래도 리컬시브의 개념에 대해서 어느정도 잡은거 같다!!