코딩테스트 연습 > 월간 코드 챌린지 시즌3 > 없는 숫자 더하기 C,C++ 풀이

선파·2022년 5월 15일
0
post-thumbnail

코딩 초보 친구가 막힌문제를 도와달라해서 (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;
}
profile
주니어 데이터 엔지니어 (D.E.)

0개의 댓글