프로그래머스 - lv1 두 개 뽑아서 더하기

두 개 뽑아서 더하기

문제는 프로그래머스에서 확인 할 수 있다.


✔ 접근방법

중복이 없는 자료구조를 사용하기위해 SET을 사용한다.

  1. 서로 다른 인덱스의 값을 더한다.
  2. set에 넣는다. 이때 중복은 허용하지 않는다.

✔ 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <set>
#include <vector>

using namespace std;

vector<int> solution(vector<int> numbers) {
    set<int> result;
    vector<int> answer;
    set<int>::iterator it;
    
    for( int i=0; i<numbers.size(); i++){
        for ( int j=0; j<numbers.size(); j++){
            if( i != j ){
                result.insert(numbers[i] + numbers[j]);
            }
        }
    }

    for( it=result.begin(); it!=result.end(); it++ ){
        answer.push_back(*it);
    }

    // for ( auto v_it = answer.begin(); v_it != answer.end(); v_it++ ) {
    //     printf("%d ", *v_it);
    // }

    return answer;
}


int main(void){

    vector<int> numbers = {2,1,3,4,1};

    solution(numbers);

    return 0;
}

☝ 팁

  • 중복을 허용하지 않는 자료구조 set을 활용
  • iterator의 활용
  • auto 키워드를 사용하면, 컴파일러가 값을 판단하여 타입을 정해준다. iter 변수를 사용할 때 활용
for ( auto s_it = result.begin(); s_it != result.end(); s_it++ ) {
     printf("%d ", *s_it);
 }

👍 참고 사이트

프로그래머스

좋은 웹페이지 즐겨찾기