==Level1==
===두개 뽑아서 더하기===
#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; }
==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> int solution(int n) { int answer = 0; int i; for(i=1; i<=n; i++) { if(n%i==0) { answer += i; //약수를 하나씩 더함 } } return answer; }
===직사각형 별찍기===
#include <stdio.h> int main(void) { int a; int b; int i, j; scanf("%d %d", &a, &b); //printf("%d", a + b); for(i=0; i<b; i++) { for(j=0; j<a; j++) { printf("*"); } printf("\n"); } return 0; }
===하샤드 수===
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> bool solution(int x) { bool answer = true; int sum=0; int temp; temp = x; while(temp!=0) { sum+=temp%10; //각 자리 수를 더함 temp/=10; } if(x%sum) //원래 수가 각 자리 수를 더한 값으로 나누어 떨어지지 않으면 false answer = false; return answer; }