반응형
프로그래머스 링크
https://school.programmers.co.kr/learn/courses/30/lessons/131705
코드 풀이
재귀를 활용하여 풀이하였습니다.
재귀함수 매개변수로는 number배열, 현재의 값을 확인하는 Cur, 인덱스를 확인하는 index, 총 적용된 숫자의 개수인 Count, 답을 저장하는 answer로 구성하였습니다.
number는 값이 변동되면 안 되고 주소값만을 활용하기 때문에 const &을 활용하였고 answer의 경우 solution함수에서의 answer 주소값을 활용하여 값을 갱신해 주었습니다.
재귀 함수의 원리는 아래와 같습니다.
1. 먼저 값이 0이고 카운트가 3이라면 삼총사를 찾은 것이기 때문에 ++answer하고 리턴
2. 범위를 벗어나면 return
3. 반복문을 순차적으로 돌면서 재귀함수 호출
4. 위 반복
코드
#include <string>
#include <vector>
using namespace std;
void Func(const vector<int>& number, int Cur, int index, int Count, int& answer)
{
if (Cur == 0 && Count == 3)
{
++answer;
return;
}
if (index >= number.size() || Count >= 3)
return;
size_t Size = number.size();
for(size_t i = index; i < Size; ++i)
{
Func(number, Cur + number[i], i + 1, Count + 1, answer);
}
}
int solution(vector<int> number) {
int answer = 0;
Func(number, 0, 0, 0, answer);
return answer;
}
반응형
'프로그래머스 > lv1' 카테고리의 다른 글
프로그래머스 : 연습문제 > 명예의 전당 (1)(lv1) (0) | 2023.07.24 |
---|---|
프로그래머스 : 연습문제 > 추억 점수(lv1) c++ (0) | 2023.07.07 |
프로그래머스 : 연습문제 > 달리기 경주(lv1) c++ (0) | 2023.06.18 |
프로그래머스 : 연습문제 > 숫자 짝꿍(lv1) c++ (0) | 2023.06.10 |
프로그래머스 : 연습문제 > 바탕화면 정리(lv1)c++ (0) | 2023.06.09 |
댓글