프로그래머스
[프로그래머스 JAVA] 두 정수 사이의 합
뿌비
2024. 7. 4. 19:51
728x90
🔥 문제 설명
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
🔥 제한 조건
a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
a와 b의 대소관계는 정해져 있지 않습니다.
🔥 입출력 예
a | b | return |
3 | 5 | 12 |
3 | 3 | 3 |
5 | 3 | 12 |
🔥 코드 1
class Solution {
public long solution(int a, int b) {
long answer = 0;
if(a == b){
answer = a;
}else{
if(a < b){
for(int i=a; i<=b; i++){
answer += i;
}
}
if(a > b){
for(int i=b; i<=a; i++){
answer += i;
}
}
}
return answer;
}
}
🔥 풀이과정
1. a와 b 가 같을 때는 아무 수나 리턴 하라고 되어 있었고, 그 부분부터 시작해야겠다고 생각해서 if else로 조건을 넣었다
2. 값의 크기가 a > b 일수도 b > a 일수도 있어서 if로 또 나누었고 그 안에서 for를 돌면서 작은 값부터 더해야 하는 마지막 값까지 answer에 차례로 더해지도록 해주었다.
3. 근데 여기서 드는 생각이... if와 for가 중복으로 2개가 있는데 for문은 하나로 줄이자 싶어서 변수를 사용해 다시 풀어보았다.
🔥 코드 2
class Solution {
public long solution(int a, int b) {
long answer = 0;
int st = 0; // a,b 중 작은값 & for문의 시작
int en = 0; // a,b 중 큰값 & for문의 끝
if(a == b){
answer = a;
}else{
if(a < b){
st = a;
en = b;
}else{
st = b;
en = a;
}
for(int i=st; i<=en; i++){
answer += i;
}
}
return answer;
}
}
728x90