연습장

월간 코드 챌린지 시즌3 > 없는 숫자 더하기

anothel 2021. 11. 23. 19:02

문제 설명

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 해야 합니다.

 

Solution

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

using namespace std;

int solution(vector<int> numbers) {
  int answer = 0;
  for (int i = 0; i < 10; i++) {
    if (find(numbers.begin(), numbers.end(), i) == numbers.end()) {
      answer += i;
    }
  }
  return answer;
}

 

남의 코드

#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;
}
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> numbers) {
  return 45 - accumulate(numbers.begin(), numbers.end(), 0);
}

 

후기

해당하는 수를 찾아내는 방법이 여러 가지가 있는데 그중에서도 있는 숫자를 더해서 빼는 방법은 정말 괜찮아 보인다. 나는 algorithm을 include 해서 find 함수를 사용하는 방법을 사용했고 앞으로도 이런 방식으로 STL을 잘 활용해야겠다.

 

(url: https://programmers.co.kr/learn/courses/30/lessons/86051)

 

728x90