[Java] 두 정수 사이의 거리 (programmers)

Haeun Noh·2022년 12월 18일
0

programmers

목록 보기
24/64
post-thumbnail

1219


문제 설명

두 정수 a b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3 b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.


제한 조건

ab가 같은 경우는 둘 중 아무 수나 리턴하세요.
ab-10,000,000 이상 10,000,000 이하인 정수입니다.
ab의 대소관계는 정해져있지 않습니다.


입출력 예

abreturn
3512
333
5312

소스 코드

import java.lang.Math;
class Solution {
    public long solution(int a, int b) {
        long sum = 0;
        int min = Math.min(a,b);
        int max = Math.max(a,b);
        if ( min == max ) return min;
        else {
            for ( int i = min; i <= max; i++ ) {
                sum += i;
            }
        }
        return sum;
    }
}

소스 풀이

import java.lang.Math;
class Solution {
    public long solution(int a, int b) {
        long sum = 0;
        int min = Math.min(a,b);
        int max = Math.max(a,b);

javalang클래스의 Math클래스를 import하여 Math.min()Math.max()를 사용할 수 있도록 한다.

합계를 나타낼 변수인 sumlong으로 잡아준다. 만약 a b 둘 다 큰 음수거나 큰 양수일 경우 int범위가 허용할 수 있는 범위를 넘어서기 때문에 넉넉히 long으로 잡아주는 것이다.
0으로 초기화를 해주어 누적을 할 수 있도록 한다.

Math.min()Math.max()를 사용하여 ab의 최솟값과 최댓값을 구하여서 for문의 초기값과 조건값을 결정한다.

        if ( min == max ) return min;
        else {
            for ( int i = min; i <= max; i++ ) {
                sum += i;
            }
        }
        return sum;

만약 ab의 값이 같다면 굳이 for문을 돌린 뒤에 return sum을 할 필요가 없으므로 조건문을 달아주어 먼저 sumreturn해줄 수 있도록 한다.

만약 ab의 값이 같지 않다면 for문을 돌려서 a부터 b까지의 수를 sum에 누적하여 더한다. 이 때에 초기값은 min이고, 조건값은 max까지이다. imin을 주어 i++로 모든 수를 돌도록 한다.
for문이 종료되면 return sum으로 sum값을 리턴해준다.


실행 화면



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글