1.1. 두개 뽑아서 더하기 ¶
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> // numbers_len은 배열 numbers의 길이입니다. int* solution(int numbers[], size_t numbers_len) { // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요. int TimesOfNumbers[201] = {0, }; //더한 결과값을 나타내는 배열, ex)1+1=2 -> 배열의 2번째 칸 값을 1 증가 int sizeOfArr=0; //동적할당할 배열의 크기 for(int i=0; i<numbers_len; i++) { for(int j=i+1; j<numbers_len; j++) TimesOfNumbers[numbers[i]+numbers[j]]++; } for(int i=0; i<=200; i++) { if(TimesOfNumbers[i]) sizeOfArr++; } int* answer = (int*)malloc(sizeof(int)*sizeOfArr); //TimesOfNumbers의 n번째 인덱스가 1이상이다 -> numbers를 더했을때 그 값이 1회 이상 나왔다. answer에 값을 추가 int j=0; for(int i=0; i<=200; i++) { if(TimesOfNumbers[i]) answer[j++] = i; } return answer; }
1.2. 2016년 ¶
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> char* solution(int a, int b) { int month[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; char dayOfWeek[7][4] = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"}; int numOfDays=0; // 리턴할 값은 메모리를 동적 할당해주세요. for(int i=0; i<a-1; i++) numOfDays+=month[i]; numOfDays+=(b-1); char* answer = (char*)malloc(sizeof(dayOfWeek[numOfDays%7])); //동적할당 for(int i=0; i<sizeof(dayOfWeek[numOfDays%7]); i++) answer[i] = dayOfWeek[numOfDays%7][i]; return answer; }
===두 정수의 합===
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> long long solution(int a, int b) { long long answer = 0; int min, max; if(a>b) { min = b; max = a; } else { min = a; max = b; } for(int i=min; i<=max; i++) answer+=i; return answer; }
1.3. 약수의 합 ¶
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> int solution(int n) { int answer = 0; int i; for(i=1; i<=n; i++) { if(n%i==0) { answer += i; //약수를 하나씩 더함 } } return answer; }