[프로그래머스/C++] ㅡ LV1 - 두 개 뽑아서 더하기

2021. 2. 21. 13:57·dev/코딩테스트(프로그래머스)

문제

programmers.co.kr/learn/courses/30/lessons/68644

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

풀이

#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 x = numbers[i] + numbers[j];
            bool flag = false;
            for (int k=0; k<answer.size(); k++) {
                if (answer[k] == x) {	// 더한 값이 겹칠 때
                    flag = true;
                    break;
                }
            }
            if (flag == false) {	// 겹치지 않을 때
               answer.push_back(x);
            }
        }
    }
    sort(answer.begin(),answer.end());
    return answer;
}

개념

vector 로 만들어지는 일차원 배열에 값 대입 시 .push_back() 을 사용한다.

answer[0] = 1; 이런 식으로 대입하려 하면 오류가 발생한다.

특이한 점은, vector로 만들어지는 이차원 배열은 그런 대입이 가능하다.

 

vector의 멤버 함수를 사용해 간단히 정렬할 수 있다.

.begin()과 .end()를 사용한다.


풀이

 

모든 가능한 수만큼 짝을 만들어야한다.

2중 for문을 사용하면 가능하다.

중첩이 되지 않게 하기 위해 j는 i+1로 초기화 했다.

 

이제 문제는 더한 값이 동일한 경우이다.

2중 for문을 거치면 [3,5,6,3,4,5,2,7,4,5] 가 나오는데, 구해야하는 답은 [2,3,4,5,6,7] 이다.

 

새로운 값을 받을 때, answer 배열의 값들을 탐색해서 값이 있으면 대입하지 않는다.

이를 위해 flag 변수를 사용한다.

 

배열에 값들이 다 들어오면, sort를 사용해 오름차로 정렬하면 된다.

 

※ 3중 for문이므로 시간초과를 걱정했다.

테스트 7에서 0.27ms의 꽤 큰 시간이 걸렸다.

'dev > 코딩테스트(프로그래머스)' 카테고리의 다른 글

[프로그래머스/C++] ㅡ LV1 - K번째수  (0) 2021.02.24
[프로그래머스/C++] ㅡ LV1 - 모의고사  (0) 2021.02.24
[프로그래머스/C++] ㅡ LV1 - 신규 아이디 추천  (0) 2021.02.23
[프로그래머스/C++] ㅡ LV1 - 완주하지 못한 선수  (0) 2021.02.23
[프로그래머스/C++] ㅡ LV1 - 크레인 인형뽑기 게임  (0) 2021.02.21
'dev/코딩테스트(프로그래머스)' 카테고리의 다른 글
  • [프로그래머스/C++] ㅡ LV1 - 모의고사
  • [프로그래머스/C++] ㅡ LV1 - 신규 아이디 추천
  • [프로그래머스/C++] ㅡ LV1 - 완주하지 못한 선수
  • [프로그래머스/C++] ㅡ LV1 - 크레인 인형뽑기 게임
dev_dev
dev_dev
C++, Python, ML, Vue
  • dev_dev
    develop about develop
    dev_dev
  • 전체
    오늘
    어제
    • 카테고리 (145) N
      • dev (144) N
        • C++ (44)
        • ML DL (1)
        • on-device AI (5) N
        • AIOT (9)
        • IOT (1)
        • 코딩테스트(백준) (49)
        • 코딩테스트(프로그래머스) (25)
        • 전자공학 (7)
        • 창업 (1)
        • 웹 (1)
        • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    uniform initialization
    Template
    인공지능
    머신러닝
    decltype
    경사하강법
    auto
    COLAB
    데이터 분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev_dev
[프로그래머스/C++] ㅡ LV1 - 두 개 뽑아서 더하기
상단으로

티스토리툴바