U E D R , A S I H C RSS

새싹교실/2020/이찌반/김재훈 (rev. 1.19)

새싹교실/2020/이찌반/김재훈


1. Level1

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;
}

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;
}

1.4. 직사각형 별찍기

#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;
}

1.5. 하샤드 수

#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;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-16 14:07:54
Processing time 0.0133 sec