알고리즘

두 정수 사이의 합

e-pd 2020. 9. 9. 00:33

 

programmers.co.kr/learn/courses/30/lessons/12912?language=java

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

programmers.co.kr

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        
        if (a > b) {
            for (int i = b; i <= a; i++) {
                answer += i;
            }
        } else if (a < b){
            for (int i = a; i <= b; i++) {
                answer += i;
            }
        } else {
            answer = a;
        }
        return answer;
        
    }
}
cs

의외로 시간 효율성을 통과 못했던 문제.

 

1. Math.abs를 이용하여 max, min을 구한뒤 for문을 min부터 돌려서 +1씩 더하기 => 시간 효율 x

2. 등차수열 공식 적용 : Math.abs(first - second) + 1) * (first + second) / 2;

될줄 알았는데, 시간효율 초과했다. Math.abs가 오래걸리는 걸까... 

3. 더 단순하게 생각해서 각 case로 쪼개서 단순하게 합을 더했다.