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;
}
}