6603_로또

이준혁·2026년 1월 9일


예제 입력 1
7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
0
예제 출력 1
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7

1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34

Study code

  • 해당 문제를 풀면서 이제 이해헀다고 생각했는데 아직 이해를 못했다
  • 결과적으로 또 반복하지만 내 위치를 파악하고 그 위치에 도착하면 결과를 출력해라 이것이 메인임
  • 또 해당 결과가 함축했다가 나오는게 아니라 할때마다 계속나와도 되는 것을 파악하고 0 에 결과가 아니라 그냥 할때 마다 결과를 도출함
  • 그리고 여기서 굳이 2차원을 만들필요도 없었고 그냥 1차원으로 해서 만들어도 되었음
  • 그래서 필요없는 clear를 쓰고 이런거임
  • 결론적으로 도착하면 결과 그리고 layer 자체가 내가 input 한거 보다 이상 넘어갈수 있어서 그게 아니면 return임
  • 추가적으로 void 라서 return 0 이 아니라 return임
  • 백트래킹으로 계혹 들어가는 것과 재귀를 활용함
  • 그래서 값을 계속 저장하고 for은 현재 layer로 이동한것이니 시작은 layer로 잡음
  • 그리고 재귀는 result_function에 i를 넣으면서 해당 루프에 전체를 다 수색하게 함

추가적인것 2차원 resize하는거 ㄱemind

int n
cin >>n;

vector <vector<int>> new;

new.reszie(n);

for(int = 0 ; i < n;i++)
{
	new[i].resize(n);
}

or

vector <vector<int>> new(n, vector<int>(n));

Code

#include <iostream>
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> input_list;

int input_value;

int value_result[6];

void result_function(int layer,int count)
{
    if(count==6)
    {
        for(int i=0 ; i<6 ; i++)
        {
            cout<<value_result[i]<<" ";
        }
        cout<<"\n";
        return;
    }

    if(layer>=input_value) return;

    for(int i=layer ; i<input_value ; i++)
    {
        value_result[count]=input_list[0][i];
        result_function(i+1,count+1);
    }
}

int main()
{
    while(1)
    {
        cin>>input_value;

        if(input_value == 0)
        {
            return 0;
        }

        vector <int> row_value(input_value);

        for(int i = 0; i<input_value ; i++)
        {
            cin>>row_value[i];
        }

        input_list.clear();
        input_list.push_back(row_value);
        result_function(0,0);
        cout<<"\n";
    }


}
profile
#자기공부 #틀린것도많음 #자기개발 여러분 인생이 힘들다 하더라도 그것을 깨는 순간 큰 희열감으로 옵니다~

0개의 댓글