코딩테스트 - 두 정수 사이의 합, C언어

728x90
반응형

두 정수가 주어졌을 때 두 정수 사이의 합을 구해서 리턴,

 

ex) 3, 5가 주어지면 3+4+5 = 12,

12를 리턴 

 

ex) 5, 3으로 주어져도 위와 같이 12를 리턴해야 함.

 

 

내가 작성한 코드, 대부분 이런 방식으로 해결했다.

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

long long solution(int a, int b) {
    long long answer = 0;
    int s, e;
    
    
    s = (a > b) ? b : a;
    e = (a > b) ? a : b;
    
    printf("%d, %d", s, e);
    for ( int i=s; i<=e; i++)    {
        answer += i;
    }
    
    
    return answer;
}

 

 

 

 

다른 분의 코드인데.. 와... 감탄이 절로 나온다. 이건 기록해야 함.

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

long long solution(int a, int b) {
    if(a==b) return a;

    //sum of the smallest and the biggest
    //multiply it by the number of numbers
    //between a and be divided by 2.
    int sum = a+b, num = b-a+1; 

    if (a>b) //if a is greater, replace num.
        num = a-b+1;

    return (long long) sum*num/2; //cast the number type 
}

 

 

- 끝 -

728x90
반응형