첫번째 코딩테스트 (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