첫번째 코딩테스트 (1단계 - C언어)

문제1

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
 - 제한 >
• x는 1 이상, 10000 이하인 정수입니다.

입출력 예>

arr return
10 true
12 true
11 false
13 false

입출력 예 설명>

입출력 예 #1>
   10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2>
   12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3>
   11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4>
   13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.

내 풀이>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool solution(int x) {
    int number, sum =0;
    bool answer;
    number = x;
    while(number>0){
        sum += number % 10;
        number = number/10;
    }
    if(x% sum ==0){
    return true;
    }
    else
        return false;
}



문제2

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1]입니다. (n은 a, b의 길이)


 - 제한사항>
• a, b의 길이는 1 이상 1,000 이하입니다.
• a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

입출력 예>

a b result
[1,2,3,4] [-3,-1,0,2] 3
[-1,0,1] [1,0,-1] -2

입출력 예 설명 >

입출력 예 #1>
    • a와 b의 내적은1*(-3) + 2*(-1) + 3*0 + 4*2 = 3입니다.
입출력 예 #2>
    • a와 b의 내적은(-1)*1 + 0*0 + 1*(-1) = -2입니다.

내 풀이>

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// a_len은 배열 a의 길이입니다.
// b_len은 배열 b의 길이입니다.
int solution(int a[], size_t a_len, int b[], size_t b_len) {
    a_len>=1&&a_len<=1000;
    b_len>=1&&b_len<=1000;
    int number=0; int result=0;  int answer = 0;
    for(number=0; number<a_len; number++){
        result=a[number]*b[number];
            answer = answer + result;
    }
    return answer;
}



Comments