쌓고 쌓다
[프로그래머스] 삼총사 C++ 풀이 및 해설 본문
반응형
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;
}반응형
'Dev Log' 카테고리의 다른 글
| [스프링 부트] 인터셉터 인증 체크 - 33 (2) | 2023.10.05 |
|---|---|
| Ajax data 여러개 넣어, @RequestBody로 여러개 받기? (0) | 2023.10.04 |
| Cannot handle managed/back reference 'defaultReference': back reference type ... not compatible with managed type ... (0) | 2023.10.01 |
| Lombok 사용시 Boolean 타입 @Data, @Getter 주의 (0) | 2023.10.01 |
| [스프링 부트] 회원 정보(세션)로 게시글 작성 - 32 (0) | 2023.10.01 |