알고리즘/프로그래머스

[211222] 두 정수 사이의 합

감자탈출기 2021. 12. 22. 14:28

문제 설명

두 정수 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의 대소관계는 정해져있지 않습니다.
입출력 예abreturn
3 5 12
3 3 3
5 3 12

 

 

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        while(true){
            if(a < b){
                for(int i = a; i <= b; i++){
                    answer+=i;
                }
            } else if(b < a){
                for(int i = b; i <= a; i++){
                    answer+=i;
                }
            } else {
                answer = a;
            }
            break;
        }
        return answer;
    }
}

리뷰 : 이미 for 문에서 범위 완전히 설정되므로 while 필요 없음. a와 b가 같은 수일 경우일때도 for문의 조건식이 <= 이므로 자동으로 한 번의 i 값만 나온다. answer = a 만 따로 할 필요 없음. a<b인 경우 빼고 모두 else 에 넣으면 됨

 

 

개선된 코드 (Math.min(숫자,숫자) , Math.max(숫자,숫자) 로 최대값 최소값 판별) 

파라미터에 타입에 따라 int 또는 double 등으로 반환된다. 2개의 인수만 받는다.

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        for(int i = Math.min(a,b); i <= Math.max(a,b); i++){
            answer += i;
        }
        return answer;
    }
}