*문제 출처는 프로그래머스에 있습니다.
문제 제목: 연속 부분 수열 합의 개수 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/131701
문제 설명
나의 풀이
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<int> elements) {
int answer = 0;
vector<int> elements_1 = elements;
map<int, int> number;
for (int i : elements)
elements_1.push_back(i);
for (int i = 1; i <= elements.size(); i++) {
for (int j = 0; j < elements.size(); j++) {
int result = 0;
for (int k = j; k < j + i; k++) {
result += elements_1[k];
}
number[result]++;
}
}
answer = number.size();
return answer;
}
※ 알아야 할 것
원형 큐보다 벡터 2개를 이어붙이고 사용했다. 이래도 중복되는 값이 여러 개 나오지 결과 값을 구할 때 오류는 발생하지 않았다. 하지만 중복되는 값이 여러개 나와서 시간을 초과할 수도 있다.
map은 요소의 중복을 막아준다. 중복되는 값을 막고 마지막에 map의 사이즈를 반환하면 합의 개수가 나온다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 할인 행사 / C++ (0) | 2024.02.21 |
---|---|
Programmers / 괄호 회전하기 / C++ (0) | 2024.02.20 |
Programmers / 귤 고르기 / C++ (0) | 2024.02.16 |
Programmers / N개의 최소공배수 / C++ (0) | 2024.02.15 |
Programmers / 구명보트 / C++ (0) | 2024.02.15 |