인프런 커뮤니티 질문&답변

lil님의 프로필 이미지
lil

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

3-E

3-E 12869

작성

·

378

0

http://boj.kr/9f41568a9d9440f2b2318d7b40498f83

안녕하세요 강의 듣기 전 제가 작성해봤던 코드입니다.

문제를 처음 봤을 때 순열이 떠올라서 순열로 풀어보려 했는데, 결과가 제가 생각했던 대로 나오지 않아서요.

제가 작성한 방식으로는 못푸는건지, 아니면 제가 놓치고 있는 부분이 있는건지 궁금합니다ㅜㅡㅜ

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

순열을 기반으로 각 경우의 수 마다 >> 순열을 다시 이어가면서 경우의수를 체크한다는 말씀이시죠?

그렇다면 이렇게 해서 다시 해보시겠어요?

제가 구조를 한번 짜봤습니다.

#include <bits/stdc++.h>
using namespace std;
const int INF = 987654321;
int n, cnt, ret = INF, scv[4];
vector<int> v;
void attack(){
    //scv가 다 0이면 return; 해당 경우의 수.  
    if(){
        return;
    }  
    do{ 
        temp = scv; 
        //이부분에 attack에 관한 로직. 
        attack(); 
        scv = temp;
    }while(next_permutation(v.begin(), v.end());
}
int main(){
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> scv[i];
        v.push_back(i);
    } 
    attack(); 
    cout << ret << '\n';
    return 0;
}

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

lil님의 프로필 이미지
lil

작성한 질문수

질문하기