쌓고 쌓다

[프로그래머스] 삼총사 C++ 풀이 및 해설 본문

알고리즘/프로그래머스

[프로그래머스] 삼총사 C++ 풀이 및 해설

승민아 2023. 10. 2. 21:19

https://school.programmers.co.kr/learn/courses/30/lessons/131705

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이 방법

BruteForce 방식으로 풀었다.

number 길이가 최대 13이기에

가능한 모든 조합을 탐색하여 풀 수 있다.

 

cnt로 몇개의 번호를 받은 상태인지 상태를 체크하고,

sum으로 총합을 관리한다.

이때 cnt가 3이고 sum이 0이라면 삼총사를 구한것이므로 answer++ 해준다.

cnt가 3인 상태에서 반복문을 돌려봐야 cnt가 4이상이 됨으로 삼총사는 구할 수 없으므로 return으로 종료시켰다.

 

전체 코드

#include <string>
#include <vector>
using namespace std;

void rec(int idx, int cnt, int sum, vector<int>& number, int& answer, int maxSize) {
    if(cnt==3&&sum==0) {
        answer++;
        return;
    }
    
    for(int i=idx+1; i<maxSize; i++) {
        rec(i, cnt+1, sum+number[i], number, answer, maxSize);
    }    
}

int solution(vector<int> number) {
    int answer = 0;
    for(int i=0; i<number.size(); i++) {
        rec(i, 1, number[i], number, answer, number.size());
    }
    
    return answer;
}
Comments