안녕 세상아,

[프로그래머스/c++] Lv1 두 개 뽑아서 더하기 본문

프로그래머스

[프로그래머스/c++] Lv1 두 개 뽑아서 더하기

돈 많은 백수가 되고싶다 2024. 9. 14. 16:36

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

 

프로그래머스

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

programmers.co.kr

기존에 풀었던 문제를 vector erase, unique를 사용하지 않고 set을 이용해서 푼 것이다. 확실히 코드가 간단해진다. 

set은 중복된 값을 같이 저장하지 않기 때문에 따로 중복된 값을 제거해줄 필요가 없다. 물론 원한다면 중복된 값도 같이 저장할 수 있다. 헤더에 unordered_set 을 추가해주면 된다. 

#include <string>
#include <vector>
#include <set>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;

    set<int> s;

    for (int i = 0; i < numbers.size(); i++) {
        for (int j = i + 1; j < numbers.size(); j++) {
            int cnt = 0;
            cnt = numbers[i] + numbers[j];
            s.insert(cnt);
        }
    }
    answer.assign(s.begin(), s.end());
    return answer;
}

https://hello-world-cpp.tistory.com/29

 

[c++/algorithm] std::set,std::map

set, map의 차이는 set은 key값만 저장하고 map은 key값과 value를 저장한다. set과 map 둘 다 중복을 허용하지 않는다. 또한, 둘 다 컨테이너 내부에서 오름차순으로 정렬 된다. ​ std::set 컨테이너 template

hello-world-cpp.tistory.com