728x90
반응형
프로그래머스 - 두 정수 사이의 합 (Java)
programmers.co.kr/learn/courses/30/lessons/12912
문제 설명
두 정수 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 |
문제 풀이 - Java
저 같은 경우는 아래와 같이 생각하여 문제풀이를 진행하였습니다.
1. 우선 parameter로 들어오는 a와 b의 대소 관계를 구분하여 분기처리하고
2. 코드의 중복 우려가 있어 메서드 화 시켜 조건에 맞게 메서드를 호출하는 방식
class Solution {
public long solution(int a, int b) {
long answer = 0;
int temp = a-b; // a와 b의 대소 구분을 위함
if(temp < 0){
answer = func(a, b);
} else if(temp > 0){
answer = func(b, a);
} else{
answer = a;
}
return answer;
}
// 메서드화 시킴
public long func(int a, int b){
long result = 0;
for(int i=a; i<=b; i++){
result += i;
}
return result;
}
}
1. int temp = a-b;
를 통해 대소 구분을 하여 분기처리
2 - 1. temp가 0보다 크다는 것은 a가 b보다 크다는 의미이므로 메서드를 호출할 때 func(a, b)
로 호출
2 - 2. temp가 0보다 작다는 것은 a가 b보다 작다는 의미이므로 메서드를 호출할 때 func(b, a)
로 호출
2 - 3. 그 외엔 a와 b가 같으므로 둘 중 아무거나 return
3. func(int a, int b)
메서드는 a부터 b까지 1씩 증가하며 더한 값을 long result에 담아 return
4. solution 메서드에서 받아 결과 return
728x90
반응형
'개발 기록 > 코딩테스트 풀이 기록' 카테고리의 다른 글
[프로그래머스] - 예산 (Java) - Summer/Winter Coding(~2018) (1) | 2021.05.17 |
---|---|
[알고리즘/코딩테스트] 로또의 최고 순위와 최저 순위 [Java 풀이] - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) (0) | 2021.05.04 |
[백준 BOJ] 2475번 검증수 - Java (알고리즘 : 수학) (0) | 2021.04.12 |
[코딩 테스트] 카카오 크레인 인형 뽑기 게임 (프로그래머스) - Java (1) | 2021.04.06 |
[백준 BOJ] 2884번 알람 시계 - Java (알고리즘 : 수학) (0) | 2021.03.27 |