내일배움캠프🔥/알고리즘 코드카타💬

[ 내일배움캠프 ] 알고리즘 코드 카타 6~10 💬

pseonu 2024. 12. 15. 04:22

[내일배움캠프 - 사전캠프]

알고리즘 코드카타

 

❤️‍🔥Algorithm Code Kata 
 
코딩에 더 익숙해지기 위해, 내일배움캠프는 매일 아침 알고리즘 코드카타 시간을 가집니다. 
반복되는 연습이라는 뜻을 가진 `Kata`를 통해 매일 아침 코딩을 훈련해봅시다. 

 


6. 정수 num1 num2가 주어질 때, num1 num2의 합을 return하도록 soltuion 함수를 완성해주세요.

제한사항

  • -50,000 ≤ num1 ≤ 50,000
  • -50,000 ≤ num2 ≤ 50,000
  •  

입출력 예

num1 num2 result
2 3 5
100 2 102

 

입출력 예 설명

#1

  • num1이 2이고 num2가 3이므로 2 + 3 = 5를 return합니다.

#2

  • num1이 100이고 num2가 2이므로 100 + 2 = 102를 return합니다.

Solution

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

int solution(int num1, int num2) {
    int answer = 0;
    answer=num1+num2;
    return answer;
}

 

추가 설명

 


7. 정수 num1 num2가 매개변수로 주어질 때, num1 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.

제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100
  •  

입출력 예

num1 num2 result
3 2 1500
7 3 2333
1 16 62

 

입출력 예 설명

#1

  • num1이 3, num2가 2이므로 3 / 2 = 1.5에 1,000을 곱하면 1500이 됩니다.

#2

  • num1이 7, num2가 3이므로 7 / 3 = 2.33333...에 1,000을 곱하면 2333.3333.... 이 되며, 정수 부분은 2333입니다. 

#3

  • num1이 1, num2가 16이므로 1 / 16 = 0.0625에 1,000을 곱하면 62.5가 되며, 정수 부분은 62입니다.

 

Solution

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

int solution(int num1, int num2) {
    int answer = 0;
    answer=1000*num1/num2;
    return answer;
}

 

추가 설명

다른 사람의 풀이 중에서 answer=1000*num1/num2;  이 부분을 

int answer = ((double) num1 / (double) num2) * 1000;

 

이런식으로 num1,num2의 형식선언을 변경하여 연산을 한 후 최종 answer는 정수형으로 다시 변환하는 풀이도 있었다


8. 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

제한사항

  • 예각 : 0 < angle < 90
  • 직각 : angle = 90
  • 둔각 : 90 < angle < 180
  • 평각 : angle = 180
  • 0 < angle ≤ 180
  • angle은 정수입니다.
  •  

입출력 예

angle result
70 1
91 4

 

입출력 예 설명

#1

  • angle이 70이므로 예각입니다. 따라서 1을 return합니다.

#2

  • angle이 91이므로 둔각입니다. 따라서 3을 return합니다.

#3

  • angle이 180이므로 평각입니다. 따라서 4를 return합니다.

 

Solution

int solution(int angle) {
    int answer = 0;
    
    if(angle >0 && angle<90)
        answer = 1;
    
    else if(angle == 90)
        answer = 2;
    
    else if(angle >90 && angle <180)
        answer =3;
    
    else if(angle ==180)
        answer =4;
    
    return answer;
}

 

추가 설명

if, else if 문을 이용하여 angle의 값에 따라 answer값을 다르게 설정


9. 정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 0 < n ≤ 1000

입출력 예

n result
10 30
4 6

 

입출력 예 설명

#1

  • n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.

#2

  • n이 4이므로 2 + 4 = 6을 return 합니다.

 

Solution

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

int solution(int n) {
    int answer = 0;
    for(int a=0 ; a<=n ; a++){
        if(a%2==0){
            answer+=a;
        }
    }
    return answer;
}

 

추가 설명

a라는 정수형 변수를 하나 만들고 a가 0부터 n까지 커지는 조건의 for문 안에서 짝수인 수(2로 나누었을때 나머지가 0인 수)를 answer에 더하도록 코드 작성


10. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 0 ≤ numbers의 원소 ≤ 1,000
  • 1 ≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
  •  

입출력 예

numbers result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 5.5
[89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 94.0

 

입출력 예 설명

#1

  • numbers의 원소들의 평균 값은 5.5입니다.

#2

  • numbers의 원소들의 평균 값은 94.0입니다.

Solution

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

// numbers_len은 배열 numbers의 길이입니다.
double solution(int numbers[], size_t numbers_len) {
    double answer = 0;
    double sum=0;
    for(int i=0 ; i<numbers_len ; i++){
        sum += numbers[i];
    }
    answer = sum/numbers_len;
    
    return answer;
}

 

추가 설명

sum 이라는 변수를 추가하여 numbers 배열 안의 수들을 모두 더하고 이를 numbers_len(배열안의 갯수)로 나누어서 평균을 구하여 answer에 대입.