본문 바로가기
알고리즘

두 정수 사이의 합

by e-pd 2020. 9. 9.

 

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로 쪼개서 단순하게 합을 더했다.

'알고리즘' 카테고리의 다른 글

소수찾기  (0) 2020.09.09
문자열 내 p와 y의 개수  (0) 2020.09.09
Permutation 구하기  (0) 2020.09.08
Reverse Linked List  (0) 2020.08.26
Char length count  (0) 2020.08.25