안녕 세상아,

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

프로그래머스

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

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

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

 

프로그래머스

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

programmers.co.kr

1. for문을 돌려서 모든 수를 다 더한다.

2. 중복된 수를 지운다 ( vector erase, unique 사용)

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

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

    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];
            answer.push_back(cnt);
        }
    }
    sort(answer.begin(), answer.end());
    answer.erase(unique(answer.begin(), answer.end()), answer.end());

    return answer;
}

 

기존에 했던 방식인 erase, unique 사용했는데 알고보니 set 사용해도 된다고 하더라고요..? set 특징 중 하나가 중복 수 제거니까! 근데 사용법 잊어버려서 다시 공부하고 해야디...화이팅!

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