본문 바로가기
프로그래밍/코딩 문제 풀이

프로그래머스 2023.07.21 (1Lv 없는 숫자 더하기)

by Rozentea 2023. 7. 21.
 

프로그래머스

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

programmers.co.kr

문제


문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항
   ◈ 1 ≤ numbers의 길이 ≤ 9
        ◈ 0≤ numbers의 모든 원소 ≤ 9
        ◈ numbers의 모든 원소는 서로 다릅니다.

입출력 예
numbers result
[1, 2, 3, 4, 6, 7, 8, 0] 14
[5, 8, 4, 0, 6, 7, 9] 6

입출력 예 설명
입출력 예 #1
   ◈ 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.

입출력 예 #2
   ◈ 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

코딩


#include <string>
#include <vector>

using namespace std;

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

    vector<int> vecNum = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    for (size_t i = 0; i < numbers.size(); ++i)
    {
        vector<int>::iterator iter = vecNum.begin();
        for (; iter != vecNum.end(); ++iter)
        {
            if (*iter == numbers[i])
            {
                vecNum.erase(iter);
                break;
            }
        }
    }

    for (size_t i = 0; i < vecNum.size(); ++i)
    {
        answer += vecNum[i];
    }

    return answer;
}

주어지는 numbers 숫자는 서로 겹치지 않는 1~9 범위의 수가 주어진다.

때문에 1~9까지 담는 vector를 하나 만들어주고, 이번에 검사하는 numbers의 요소를 vecNum에서 찾아 지워주었다.

이때, vector.erease()는 iterator를 전달받아야 하기 때문에 2번째 for문은 iterator로 반복 수행해주었다.

실행 결과