본문 바로가기

Algorithm/Programers - Java

[프로그래머스] 두 정수의 합 - Math클래스

 

Level. 1

 

문제

 

풀이

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

Math클래스의 max, min 메서드를 사용하여 최댓값, 최솟값을 구하여 두 숫자 사이에 있는 모든 값을 더해주었다. 

 

 

http://www.tcpschool.com/java/java_api_math

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 


다른 사람 풀이

class Solution {

    public long solution(int a, int b) {
        return sumAtoB(Math.min(a, b), Math.max(b, a));
    }

    private long sumAtoB(long a, long b) {
        return (b - a + 1) * (a + b) / 2;
    }
}

등차수열의 합 공식을 사용한 풀이이다.

 

등차수열

연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다.

예를 들어 1, 3, 5, 7, 9, ...은 등차수열이다

 

등차수열의 일반항

  • n번째항 = a+(n−1)d
    a : 첫째 항
    d : 공차

등차수열의 합

  • 첫째항(a)부터 마지막항(b)까지 n개의 항(b-a+1)의 합을 구하는 공식
  • n * (a + b ) / 2
    -> (b - a + 1) * (a + b ) / 2