Summary:

두 정수 사이에 있는 정수 개수를 구하고 사이에 있는 정수의 합을 구하는 문제.

문제설명

두 정수 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
3512
333
5312

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


처음엔 LinkedList를 통해 접근했다. 그러나 계속되는 출력 범위 초과라는 말에 계속 수정을 했다.
a와 b가 누가 크냐에 따라 index 값이 달라지기 때문에 처음엔 if문으로 a>b, a<b, a=b일 때 경우를 나눠서 구현하였다. 그러나 코드가 쓸때 없이 길어졌고 여전히 출력 범위 초과를 해결할 수 없었다. 그래서 절대값을 이용했다. 그래도 해결실패...
결국 Math.min & Math.max를 마지막으로 썼으나 해결 실패.........

하지만 문제는 System.out.Print에 있었다.... 그걸 지우니 그냥 통과.....

그래도 나름 리팩토링을 하는 재미가 있었다. LinkedList -> Long 타입  &&  if문 -> 절대값 -> Math.min과 max

코드 1줄이 엄청난 고통을 가져다 줌을 배우면서 1줄도 큰 의미를 가짐을 알았다. 또한 다시한번 리팩토링의 중요성도 알 수 있었다.


배운점 

리팩토링의 중요성, 코드 1줄도 무시하면 안된다. Math.min & max

공부할 것

Math 메소드 및 원시형 타입 복습


BELATED ARTICLES

more