PS/Programmers

[Programmers] 두 정수 사이의 합

서현 SEOHYEON 2023. 5. 11. 16:54

📝 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12912

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🔑 풀이 과정

① 나같은 경우는 둘 중 작은 수를 무조건 a에 넣고, 큰 수를 b에 넣은 후

a부터 시작해서 b까지 for문을 돌리면서 합계를 구하는 방식을 선택했다.

만약 b가 a보다 작은 경우, swap을 해준다.

 

- swap하지 않고 a가 b보다 작은 경우의 for문, b가 a보다 작은 경우의 for문을 나눠서 작성하는 방법도 있다.

 

② 이미 주어진 solution에서 리턴형식을 long으로 줘서 수의 범위를 체크할 필요는 없지만... 한 번 확인해보자

a와 b의 최솟값은 -(10^7), 최댓값은 +(10^7)이다.

합이 가장 클 때는 a가 1, b가 10^7일때 일것이다.

1부터 10^7까지의 합은 (10^7)*(10^7+1)/2 이므로 int형 범위를 초과한다. 그러므로 long형을 사용해야 한다.

 

 

 

🔓 답안

class Solution {
    public long solution(int a, int b) {
        if(b < a){
            int temp = a;
            a = b;
            b = temp;
        }
        
        long sum = 0;
        
        for(int i = a; i <= b; i++){
            sum += i;
        }
        
        return sum;
    }
}