본문 바로가기
프로그래머스 C++/Level.1

프로그래머스 Level.1 없는 숫자 더하기

by yeni_0224 2023. 11. 13.
728x90
반응형

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

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> numbers) {
    int answer = 0;
    vector<int> numbs = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for(int i = 0; i < numbs.size(); i++){
        for(int j = 0; j < numbers.size(); j++){
            if (numbs[i] == numbers[j]){
                numbs[i] = 0;
            }
        }
        answer += numbs[i];
    }
    return answer;
}

 

0부터 9까지의 배열을 하나 더 만들어 numbers의 배열 요소들과 비교해

numbers의 숫자와 일치하면 새로 만든 0부터 9까지의 배열 원소를 0으로 만들어 덧셈을 했을 때도 효력(?)이 없게 만들어줬다. 배열 원소를 삭제하기보다 조금 더 표현이 쉽다고 생각했다.

그래서 0이 되지 않은 배열의 원소들 합을 answer로 출력하도록 했다.

 

이것보다 더 효과적인 풀이법이 있을 거라 생각해서 다른 사람들의 풀이를 찾아보았다.

어차피 numbers에 없는 원소들의 합을 구해야하기 때문에 0부터 9까지의 합에서 numbers의 원소 합을 빼주는 방법을 사용했다. 이 풀이법을 보고 아차 했다..!

 

역시 세상에 똑똑한 사람들은 많다.

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> numbers) {

    int answer = 45;

    for (int i = 0 ; i < numbers.size() ; i++)
        answer -= numbers[i];

    return answer;
}
728x90
반응형