코딩 초보 친구가 막힌문제를 도와달라해서 (C)
주석 주렁주렁 달아서 보내주었다.
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
입출력 예 #1
5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
나의 풀이 (C)
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
int answer = 0;
int tmp=0;
for(int j = 0; j <= 9 ; j++) // 배열에 0~9 값이 들어있는지 확인하는 반복문
{
for(int i = 0; i < numbers_len ; i++) // 배열의 인덱스에 참조하기 위한 i문 (numbers_len 수 만큼)
{
if(numbers[i] == j) // 값이 존재하면 tmp에 더해지고 없으면 추가가 안됨
tmp+=j; // 배열에 존재하는 모든 값을 추가한다.
}
}
answer = 45 - tmp; // 0부터 9까지의 더한 값(45)에서 tmp를 빼면 누락된 값이 answer에 들어가게된다.
return answer;
}
tmp = tmp + j
tmp +=j
BEST 답 (C++)
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> numbers) {
int answer = 45;
for(int j = 0; j < numbers.size() ; j++)
{
answer-=numbers[j];
}
return answer;
}