Cos Pro 2급 2차_문제2번 C언어
#문제2 자연수가 들어있는 배열에 3의 배수와 5의 배수 중 어떤 수가 더 많은지 알아보려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다. 1. 3의 배수의 개수를 셉니다. 2. 5의 배수의 개수를 셉니다. 3. 3의 배수와 5의 배수의 개수를 비교 후 다음을 수행합니다. 3-1. 만약 3의 배수가 더 많다면 "three"를 return 합니다. 3-2. 만약 5의 배수가 더 많다면 "five"를 return 합니다. 3-3. 만약 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 합니다. 자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어질 때, 배열에 3의 배수의 개수가 더 많다면 "three"를, 5의 배수의 개수가 더 많다면 "five"를,..
2024.03.29
Cos Pro 2급 2차_문제1번 C언어
#문제1 왼손 장갑의 제품 번호가 들어있는 배열과 오른손 장갑의 제품 번호가 들어있는 배열이 있습니다. 제품 번호는 1부터 10 사이의 자연수입니다. 제품 번호가 같은 왼손장갑과 오른손 장갑을 합쳐 장갑 한 쌍을 만들 수 있습니다. 이때, 최대한 많은 쌍의 장갑을 만들면 최대 몇 쌍을 만들 수 있는지 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다. 1. 왼손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다. 2. 오른손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다. 3. 각 제품 번호별로 최대한 많은 장갑 쌍을 만들면서 개수를 셉니다. 왼손 장갑의 제품 번호가 들어있는 배열 left_gloves와 left_gloves의 길이 left_gloves_len, 오른손 장갑의 제..
2024.03.29
Cos Pro 2급 1차_문제10번 C언어
#문제10 평균은 자료의 합을 자료의 개수로 나눈 값을 의미합니다. 자연수가 들어있는 배열의 평균을 구하고, 평균 이하인 숫자는 몇 개 있는지 구하려합니다. 예를 들어 주어진 배열이 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이라면, 평균은 5.5이므로 배열에서 평균 이하인 값은 5개입니다. 자연수가 들어있는 배열 data와 data의 길이 data_len이 매개변수로 주어질 때, 배열에 평균 이하인 값은 몇 개인지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요. #####매개변수 설명 자연수가 들어있는..
2024.03.29
Cos Pro 2급 1차_문제9번 C언어
#문제9 알파벳 문자열이 주어질 때, 연속하는 중복 문자를 삭제하려고 합니다. 예를 들어, "senteeeencccccceeee"라는 문자열이 주어진다면, "sentence"라는 결과물이 나옵니다. 영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 매개변수로 주어질 때, 연속하는 중복 문자들을 삭제한 결과를 return 하도록 solution 함수를 작성하였습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요. #####매개변수 설명 영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 solution 함수의 매개변수로 주어집니다. characters는..
2024.03.29
Cos Pro 2급 1차_문제8번 C언어
#문제8 앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어 또는 문장을 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, noon은 팰린드롬 단어입니다. 소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장이 팰린드롬 문장인지 점검하려 합니다. 문장 내에서 알파벳만 추출하였을 때에 팰린드롬 단어이면 팰린드롬 문장입니다. 예를 들어, "Never odd or even."과 같은 문장은 팰린드롬입니다. 소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 주어질 때 팰린드롬인지 아닌지를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않..
2024.03.29
Cos Pro 2급 1차_문제7번 C언어
#문제7 A 대학에서는 수준별 영어 강의를 제공하고 있습니다. 초급 영어 강의는 토익시험에서 650점 이상 800점 미만의 성적을 취득한 학생만을 수강대상으로 하고 있습니다. 초급 영어 강의에 수강신청한 사람이 10명일 때, 이 중에서 몇명이 수강 대상에 해당하는지 확인하려합니다. 수강신청자들의 토익 성적이 들어있는 배열 scores와 scores의 길이 scores_len이 매개변수로 주어질 때, 수강 대상자들의 인원수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요. #####매개변수 설명 수강신청자들의 토익 ..
2024.03.29
Cos Pro 2급 1차_문제6번 C언어
#문제6 369 게임은 여러 명이 같이하는 게임입니다. 게임의 규칙은 아래와 같습니다. 1부터 시작합니다. 한 사람씩 차례대로 숫자를 1씩 더해가며 말합니다. 말해야 하는 숫자에 3, 6, 9중 하나라도 포함되어있다면 숫자를 말하는 대신 숫자에 포함된 3, 6, 9의 개수만큼 손뼉을 칩니다. 어떤 수 number가 매개변수로 주어질 때, 1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번 쳤는지를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요. #####매개변수 설명 number가 solution 함수의 매개변수로 주어집니다. number는 10 이상 1,000 이하의 자연수입니다. #####return 값 설명 1부터 numb..
2024.03.29
Cos Pro 2급 1차_문제5번 C언어
#문제5 주어진 배열의 순서를 뒤집으려고 합니다. 예를 들어 주어진 배열이 [1, 4, 2, 3]이면, 순서를 뒤집은 배열은 [3, 2, 4, 1]입니다. 정수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어졌을 때, arr를 뒤집어서 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요. 매개변수 설명 정수가 들어있는 배열 arr와 arr의 길이 arr_len이 solution 함수의 매개변수로 주어집니다. arr_len은 1 이상 100 이하의 자연수입니다. arr의 원소는 -100 이상 100 이하의 정수입니다. return 값 설명 배열 arr의 순서를 뒤집어서 return 해주세요. 예시 arr arr_len return [1,..
2024.03.29
반응형

#문제2 자연수가 들어있는 배열에 3의 배수와 5의 배수 중 어떤 수가 더 많은지 알아보려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. 3의 배수의 개수를 셉니다.
2. 5의 배수의 개수를 셉니다.
3. 3의 배수와 5의 배수의 개수를 비교 후 다음을 수행합니다.
  3-1. 만약 3의 배수가 더 많다면 "three"를 return 합니다.
  3-2. 만약 5의 배수가 더 많다면 "five"를 return 합니다.
  3-3. 만약 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 합니다.

자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어질 때, 배열에 3의 배수의 개수가 더 많다면 "three"를, 5의 배수의 개수가 더 많다면 "five"를, 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.


#####매개변수 설명 자연수가 들어있는 배열 arr와 arr의 길이 arr_len이 solution 함수의 매개변수로 주어집니다.

  • arr_len은 1 이상 100 이하의 자연수입니다.
  • arr에 들어있는 숫자는 1 이상 1,000 이하의 자연수입니다.

#####return 값 설명 배열에 3의 배수의 개수가 더 많다면 "three"를, 5의 배수의 개수가 더 많다면 "five"를, 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 해주세요.


#####예시

arr arr_len return

[2, 3, 6, 9, 12, 15, 10, 20, 22, 25] 10 "three"

#####예시 설명

  • 3의 배수 : 3, 6, 9, 12, 15
  • 5의 배수 : 10, 15, 20, 25

3의 배수는 5개, 5의 배수는 4개이므로 3의 배수가 더 많습니다. 따라서 "three"를 return 합니다.

문제

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

int func_a(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 5 == 0)
            count += 1;
    return count;
}

char* func_b(int three, int five){
    if (three > five)
        return "three";
    else if (three < five)
        return "five";
    else
        return "same";
}

int func_c(int arr[], arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 3 == 0)
            count += 1;
    return count;
}

char* solution(int arr[], int arr_len) {
    int count_three = func_@@@(@@@);
    int count_five = func_@@@(@@@);
    char* answer = func_@@@(@@@);
    return answer;
}

// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
int main() {
    int arr[10] = {2, 3, 6, 9, 12, 15, 10, 20, 22, 25};
    int arr_len = 10;
    char* ret = solution(arr, arr_len);

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    printf("solution 함수의 반환 값은 %s 입니다.\\n", ret);
}

정답

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

int func_a(int arr[], int arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 5 == 0)
            count += 1;
    return count;
}

char* func_b(int three, int five){
    if (three > five)
        return "three";
    else if (three < five)
        return "five";
    else
        return "same";
}

int func_c(int arr[], arr_len){
    int count = 0;
    for(int i = 0; i < arr_len; ++i)
        if (arr[i] % 3 == 0)
            count += 1;
    return count;
}

char* solution(int arr[], int arr_len) {
    int count_three = func_c(arr, arr_len);
    int count_five = func_a(arr, arr_len);
    char* answer = func_b(count_three, count_five);
    return answer;
}
반응형
반응형

#문제1 왼손 장갑의 제품 번호가 들어있는 배열과 오른손 장갑의 제품 번호가 들어있는 배열이 있습니다. 제품 번호는 1부터 10 사이의 자연수입니다. 제품 번호가 같은 왼손장갑과 오른손 장갑을 합쳐 장갑 한 쌍을 만들 수 있습니다. 이때, 최대한 많은 쌍의 장갑을 만들면 최대 몇 쌍을 만들 수 있는지 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

1. 왼손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
2. 오른손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
3. 각 제품 번호별로 최대한 많은 장갑 쌍을 만들면서 개수를 셉니다.

왼손 장갑의 제품 번호가 들어있는 배열 left_gloves와 left_gloves의 길이 left_gloves_len, 오른손 장갑의 제품 번호가 들어있는 배열 right_gloves와 right_gloves의 길이 right_gloves_len이 매개변수로 주어질 때, 최대 몇 개의 장갑 쌍을 만들 수 있는지 return 하도록 solution 함수를 작성하려 합니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다. 코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.


매개변수 설명

왼손 장갑의 제품 번호가 들어있는 배열 left_gloves와 left_gloves의 길이 left_gloves_len, 오른손 장갑의 제품 번호가 들어있는 배열 right_gloves와 right_gloves의 길이 right_gloves_len이 solution 함수의 매개변수로 주어집니다.

  • left_gloves_len은 1 이상 100 이하의 자연수입니다.
  • left_gloves의 원소는 1 이상 10 이하의 자연수입니다.
  • right_gloves_len은 1 이상 100 이하의 자연수입니다.
  • right_gloves의 원소는 1 이상 10 이하의 자연수입니다.

return 값 설명

왼손과 오른손의 제품 번호가 같은 장갑 끼리 한 쌍을 만들 때, 최대 몇 개의 쌍을 만들 수 있는지 개수를 return 해주세요.


예시

left_gloves left_gloves_len right_gloves right_gloves_len return

[2, 1, 2, 2, 4] 5 [1, 2, 2, 4, 4, 7] 6 4

예시 설명

예시 #1 왼손 장갑 : 1번 장갑 1개, 2번 장갑 3개, 4번 장갑 1개가 있습니다. 오른손 장갑 : 1번 장갑 1개, 2번 장갑 2개, 4번 장갑 2개, 7번 장갑 1개가 있습니다.

따라서 1번 장갑 한 쌍, 2번 장갑 두 쌍, 4번 장갑 한 쌍을 만들면 최대 4개의 장갑 쌍을 만들 수 있습니다.

문제

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

const int max_product_number = 10;

int* func_a(int gloves[], int gloves_len){
    int* counter = (int*)malloc(sizeof(int)*(max_product_number + 1));
    for(int i = 0; i <= max_product_number; ++i)
        counter[i] = 0;
    
    for(int i = 0; i < gloves_len; ++i)
        @@@
    
    return counter;
}

int min(int a, int b){
    return a < b ? a : b;
}

int solution(int left_gloves[], int left_gloves_len, int right_gloves[], int right_gloves_len) {
    int* left_counter = func_a(left_gloves, left_gloves_len);
    int* right_counter = func_a(right_gloves, right_gloves_len);
    int total = 0;
    for(int i = 1; i <= max_product_number; ++i)
        total += min(left_counter[i], right_counter[i]);
    return total;
}

// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
int main() {
    int left_gloves[5] = {2, 1, 2, 2, 4};
    int left_gloves_len = 5;
    int right_gloves[6] = {1, 2, 2, 4, 4, 7};
    int right_gloves_len = 6;
    int ret = solution(left_gloves, left_gloves_len, right_gloves, right_gloves_len);

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    printf("solution 함수의 반환 값은 %d 입니다.\\n", ret);
}

정답

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

const int max_product_number = 10;

int* func_a(int gloves[], int gloves_len){
    int* counter = (int*)malloc(sizeof(int)*(max_product_number + 1));
    for(int i = 0; i <= max_product_number; ++i)
        counter[i] = 0;
    
    for(int i = 0; i < gloves_len; ++i)
        counter[gloves[i]]++;
    
    return counter;
}

int min(int a, int b){
    return a < b ? a : b;
}

int solution(int left_gloves[], int left_gloves_len, int right_gloves[], int right_gloves_len) {
    int* left_counter = func_a(left_gloves, left_gloves_len);
    int* right_counter = func_a(right_gloves, right_gloves_len);
    int total = 0;
    for(int i = 1; i <= max_product_number; ++i)
        total += min(left_counter[i], right_counter[i]);
    return total;
}

반응형
반응형

#문제10 평균은 자료의 합을 자료의 개수로 나눈 값을 의미합니다. 자연수가 들어있는 배열의 평균을 구하고, 평균 이하인 숫자는 몇 개 있는지 구하려합니다.

예를 들어 주어진 배열이 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이라면, 평균은 5.5이므로 배열에서 평균 이하인 값은 5개입니다.

자연수가 들어있는 배열 data와 data의 길이 data_len이 매개변수로 주어질 때, 배열에 평균 이하인 값은 몇 개인지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


#####매개변수 설명 자연수가 들어있는 배열 data와 data의 길이 data_len이 solution 함수의 매개변수로 주어집니다.

  • data_len은 10 이상 100 이하의 자연수입니다.
  • data의 원소는 1 이상 1,000 이하의 자연수입니다.

#####return 값 설명 평균보다 값이 작은 자연수는 몇개인지 return 해주세요.


#####예시

data data_len return

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 10 5
[1, 1, 1, 1, 1, 1, 1, 1, 1, 10] 10 9

#####예시 설명 예시 #1 자료의 합은 55이며, 자료의 개수는 10개입니다. 따라서 평균은 55 / 10 = 5.5입니다. 주어진 배열에서 5.5보다 작은 숫자는 총 5개입니다.

예시 #2 자료의 합은 19이며, 자료의 개수는 10개입니다. 따라서 평균은 19 / 10 = 1.9입니다. 주어진 배열에서 1.9보다 작은 숫자는 총 9개입니다.

문제

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

int solution(int data[], int data_len) {
    double total = 0;
    for(int i = 0; i < data_len; i++)
        total += data[i];
    int cnt = 0;
    double average = data_len / total;
    for(int i = 0; i < data_len; i++)
        if(data[i] <= average)
            cnt += 1;
    return cnt;
}

// The following is main function to output testcase. The main function is correct and you shall correct solution function.
int main() {
    int data1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int data_len1 = 10;
    int ret1 = solution(data1, data_len1);
    
    // Press Run button to receive output.
    printf("Solution: return value of the function is %d .\\n", ret1);
    
    int data2[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 10};
    int data_len2 = 10;
    int ret2 = solution(data2, data_len2);
    
    // Press Run button to receive output.
    printf("Solution: return value of the function is %d .\\n", ret2);
}

정답

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

int solution(int data[], int data_len) {
    double total = 0;
    for(int i = 0; i < data_len; ++i)
        total += data[i];
    int cnt = 0;
    double average = total / data_len;
    for(int i = 0; i < data_len; ++i)
        if(data[i] <= average)
            cnt += 1;
    return cnt;
}
반응형
반응형

#문제9 알파벳 문자열이 주어질 때, 연속하는 중복 문자를 삭제하려고 합니다. 예를 들어, "senteeeencccccceeee"라는 문자열이 주어진다면, "sentence"라는 결과물이 나옵니다.

영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 매개변수로 주어질 때, 연속하는 중복 문자들을 삭제한 결과를 return 하도록 solution 함수를 작성하였습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


#####매개변수 설명 영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 solution 함수의 매개변수로 주어집니다.

  • characters는 알파벳 소문자로만 이루어져있습니다.
  • characters의 길이는 10 이상 100 이하입니다.

#####return 값 설명 characters에서 연속하는 중복 문자를 제거한 문자열을 return 해주세요.


#####예시

characters return

"senteeeencccccceeee" "sentence"

문제

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

char* solution(char* characters) {
	char* result = malloc(sizeof(char)*strlen(characters));
	int result_len = 0;
	result[0] = characters[0];
	result_len++;
	for (int i = 1; i < strlen(characters); i++) {
		if (characters[i - 1] != characters[i]) {
			result[result_len] = characters[i];
			result_len++;
		}
	}
	result[result_len] = NULL;
	return result;
}

정답

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

char* solution(char* characters) {
    char* result = malloc(sizeof(char)*strlen(characters));
    int result_len = 0;
    result[0] = characters[0];
    result_len++;
    for (int i = 0; i < strlen(characters); i++) {
        if (characters[i - 1] != characters[i]) {
            result[result_len] = characters[i];
            result_len++;
        }
    }
    result[result_len] = NULL;
    return result;
}

// The following is main function to output testcase. The main function is correct and you shall correct solution function.
int main() {
    char* characters = "senteeeencccccceeee";
    char* ret = solution(characters);

    // Press Run button to receive output.
    printf("Solution: return value of the function is %s .\\n", ret);
}
반응형
반응형

#문제8 앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어 또는 문장을 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, noon은 팰린드롬 단어입니다.

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장이 팰린드롬 문장인지 점검하려 합니다. 문장 내에서 알파벳만 추출하였을 때에 팰린드롬 단어이면 팰린드롬 문장입니다. 예를 들어, "Never odd or even."과 같은 문장은 팰린드롬입니다.

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 주어질 때 팰린드롬인지 아닌지를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.


매개변수 설명

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 solution 함수의 매개변수로 주어집니다.

  • sentence의 길이는 1이상 100이하입니다.
  • sentence에는 적어도 하나의 알파벳이 포함되어 있습니다.
  • setntence의 각 문자는 소문자 알파벳, 공백(" "), 또는 마침표(".")입니다.

return 값 설명

주어진 문장이 팰린드롬인지 아닌지를 return 해주세요.


예시

예시 설명

예시 #1 알파벳과 숫자만 추출하여 소문자로 변환해보면 "neveroddoreven"이 되며 이 단어는 팰린드롬입니다.

예시 #2 문장의 맨 앞 문자인 "p"와 맨 뒤 문자인 "e"가 다르므로 팰린드롬이 아닙니다.

문제

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

bool solution(char* sentence) {
    char *str = (char *)malloc(sizeof(char) * 103);
    int len = 0;
    for(int i = 0; i < strlen(sentence); i++){
        char ch = sentence[i];
        if(ch != ' ' || ch != '.') str[len++] = ch;
    }
    for(int i = 0; i < len / 2; i++){
        if(str[i] != str[len - 1 - i]) return false;
    }
    return true;
}

// The following is main function to output testcase. The main function is correct and you shall correct solution function.
int main() {
    char sentence1[19] = "never odd or even.";
    bool ret1 = solution(sentence1);
    
    // Press Run button to receive output.
    printf("Solution: return value of the function is %s .\\n", ret1 == true ? "true" : "false");
  
    
    char sentence2[19] = "palindrome";
    bool ret2 = solution(sentence2);
    
    // Press Run button to receive output.
    printf("sSolution: return value of the function is %s .\\n", ret2 == true ? "true" : "false");
}

정답

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

bool solution(char* sentence) {
    char *str = (char *)malloc(sizeof(char) * 103);
    int len = 0;
    for(int i = 0; i < strlen(sentence); i++){
        char ch = sentence[i];
        if(ch != ' ' && ch != '.') str[len++] = ch;
    }
    for(int i = 0; i < len / 2; i++){
        if(str[i] != str[len - 1 - i]) return false;
    }
    return true;
}

반응형
반응형

#문제7 A 대학에서는 수준별 영어 강의를 제공하고 있습니다. 초급 영어 강의는 토익시험에서 650점 이상 800점 미만의 성적을 취득한 학생만을 수강대상으로 하고 있습니다. 초급 영어 강의에 수강신청한 사람이 10명일 때, 이 중에서 몇명이 수강 대상에 해당하는지 확인하려합니다.

수강신청자들의 토익 성적이 들어있는 배열 scores와 scores의 길이 scores_len이 매개변수로 주어질 때, 수강 대상자들의 인원수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.


#####매개변수 설명 수강신청자들의 토익 성적이 들어있는 배열 scores와 scores의 길이 scores_len이 solution 함수의 매개변수로 주어집니다.

  • scores의 원소는 500 이상 990 이하의 정수입니다.
  • scores_len은 10입니다.

#####return 값 설명 수강 대상자들의 인원수를 return 해주세요.


#####예시

scores scores_len return

[650, 722, 914, 558, 714, 803, 650, 679, 669, 800] 10 6

#####예시 설명

점수 650 722 914 558 714 803 650 679 669 800

수강 대상 O O X X O X O O O X

650점 이상 800점 미만의 성적을 취득한 학생이 수강대상이므로, 800점을 취득한 학생은 수강대상이 아닙니다. 따라서, 6명이 수강 대상입니다.

문제

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

int solution(int scores[], int scores_len) {
    int count = 0;
    for (int i = 0; i < scores_len; i++) 
        if (650 <= scores[i] || scores[i] < 800) 
            count += 1;
    return count;
}

// The following is main function to output testcase. The main function is correct and you shall correct solution function.
int main() {
    int scores[10] = {650, 722, 914, 558, 714, 803, 650, 679, 669, 800};
    int scores_len = 10;
    int ret = solution(scores, scores_len);

    // Press Run button to receive output.
    printf("Solution: return value of the function is %d .\\n", ret);
}

정답

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

int solution(int scores[], int scores_len) {
	int count = 0;
	for (int i = 0; i < scores_len; i++) 
		if (650 <= scores[i] && scores[i] < 800) 
			count += 1;
	return count;
}
반응형
반응형

#문제6 369 게임은 여러 명이 같이하는 게임입니다. 게임의 규칙은 아래와 같습니다.

  • 1부터 시작합니다.
  • 한 사람씩 차례대로 숫자를 1씩 더해가며 말합니다.
  • 말해야 하는 숫자에 3, 6, 9중 하나라도 포함되어있다면 숫자를 말하는 대신 숫자에 포함된 3, 6, 9의 개수만큼 손뼉을 칩니다.

어떤 수 number가 매개변수로 주어질 때, 1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번 쳤는지를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


#####매개변수 설명 number가 solution 함수의 매개변수로 주어집니다.

  • number는 10 이상 1,000 이하의 자연수입니다.

#####return 값 설명 1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번을 쳤는지 return 해주세요.


#####예시

#####예시 설명 3, 6, 9 : 각각 한 번 (+3) 13, 16, 19 : 각각 한 번 (+3) 23, 26, 29 : 각각 한 번 (+3) 30, 31, 32, 33, ..., 38, 39 : 십의 자리 열 번 + 일의 자리 세 번 (+13) 따라서, 3 + 3 + 3 + 13 = 22번의 박수를 칩니다.

문제

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

int solution(int number) {
    int count = 0;
    for (int i = 1; i <= number; i++) {
        int current = i;
         int temp = count;
        while (current != 0) {
            if (@@@){
                count++;
                printf("pair");
            }
            current /= 10;
        }
        if(temp == count)
            printf("%d", i);
        printf(" ");
    }
    printf("\\n");
    return count;
}

// The following is main function to output testcase.
int main() {
    int number = 40;
    int ret = solution(number);

    // Press Run button to receive output.
    printf("Solution: return value of the function is %d .\\n", ret);
}

정답

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

int solution(int number) {
	int count = 0;
	for (int i = 1; i <= number; i++) {
		int current = i;
		while (current != 0) {
			if (current % 10 == 3 || current % 10 == 6 || current % 10 == 9)
				count++;
			current /= 10;
		}
	}
	return count;
}
반응형
반응형

#문제5 주어진 배열의 순서를 뒤집으려고 합니다.

예를 들어 주어진 배열이 [1, 4, 2, 3]이면, 순서를 뒤집은 배열은 [3, 2, 4, 1]입니다.

정수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어졌을 때, arr를 뒤집어서 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

정수가 들어있는 배열 arr와 arr의 길이 arr_len이 solution 함수의 매개변수로 주어집니다.

  • arr_len은 1 이상 100 이하의 자연수입니다.
  • arr의 원소는 -100 이상 100 이하의 정수입니다.

return 값 설명

배열 arr의 순서를 뒤집어서 return 해주세요.


예시

arr arr_len return

[1, 4, 2, 3] 4 [3, 2, 4, 1]

예시 설명

[1, 4, 2, 3]을 뒤에서부터 읽으면 3, 2, 4, 1입니다. 따라서 [1, 4, 2, 3]의 순서를 뒤집은 결과는 [3, 2, 4, 1]이 됩니다.

문제

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

int* solution(int arr[], int arr_len) {
    int left = 0;
    int right = arr_len - 1;
    while(@@@){
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        left += 1;
        right -= 1;
    }
    return arr;
}

// The following is main function to output testcase.
int main() {
    int arr[4] = {1, 4, 2, 3};
    int arr_len = 4;
    int* ret = solution(arr, arr_len);

    // Press Run button to receive output. 
    printf("Solution: return value of the function is {");
    for(int i = 0; i < 4; i++){
        if (i != 0) printf(", ");
        printf("%d", ret[i]);
    }
    printf("} .\\n");
}

정답

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

int* solution(int arr[], int arr_len) {
    int left = 0;
    int right = arr_len - 1;
    while(left < right){
        int tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left += 1;
        right -= 1;
    }
    return arr;
}
반응형