새소식

알고리즘 문제풀이/프로그래머스

[정렬] 프로그래머스 월간 코드 챌린지 시즌1 1번 :: 두 개 뽑아서 더하기 (cpp, java)

  • -

프로그래머스 월간 코드 챌린지 시즌 1

두 개 뽑아서 더하기

문제 정리

  1. 주어진 배열에서 서로 다른 인덱스의 두 수를 뽑는다.
  2. 더해서 만들 수 있는 모든 수를 오름차순으로 정렬하여 return 하라

문제 풀이

  1. 이중 for문을 돌면서 i와 j가 같지 않은 경우 set에 넣는다. (중복 제거를 위해 set에 넣음)
  2. set크기의 배열을 생성
  3. iterator를 통해 set의 원소들을 모두 뽑아 배열에 넣는다.
  4. Arrays.sort()를 통해 오름차순으로 정렬한다.

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

두 개 뽑아서 더하기 cpp

가능한 조합을 모두 vector에 넣고
sotring을 우선 진행한 다음에
unique 함수를 통해 연속된 수 중 중복된 수를 지웠습니다
이 외에도 bool visited를 통해 check할 수도 있고 set을 이용해 풀이할 수도 있습니다

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

using namespace std;

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

    for (int i = 0; i < numbers.size(); i++) {
        for (int j = i + 1; j < numbers.size(); j++) {
            ans.push_back(numbers[i] + numbers[j]);
        }
    }

    sort(ans.begin(), ans.end());
    ans.erase(unique(ans.begin(), ans.end()), ans.end());
    return ans;
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.