[Programmers] level 1 - 두 정수 사이의 합

👩🏻‍💻 문제

👩🏻‍💻 정답 코드

class Solution {
  public long solution(int a, int b) {
      long answer = 0;
      if(a > b) {
          int t = a;
          a = b;
          b = t;
      }
      for(int i=a; i<=b; i++) {
          answer += i;
      }
      return answer;
  }
}

나는 for문으로 했는데... 좋아요 제일 많은 분 풀이는 등차수열 합공식을 쓴 풀이였다

👩🏻‍💻 개선 코드

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;
    }
}

그래서 들고 와 봤습니다~ 등차수열 합공식을 함수 sumAtoB로 만든 풀이.
그리고 if 문 대신 Math.min(), Math.max()로 대소비교해서 sumAtoB의 인자로 넘겨줬다.

좋은 웹페이지 즐겨찾기