본문 바로가기
코딩테스트/프로그래머스

[프로그래머스/Java] LV.1 두 정수 사이의 합

by ⓞㅖ롱 2022. 9. 22.

 

간단한 문제인데 다른 사람들 풀이가 다양해서 재밌었다ㅋㅋ

같은 문제를 보고 이렇게 다 다르게 푸는구나...

 

 

내 코드

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        int start = a;
        int end = b;

        if(a == b) return a;
        if(a > b) { start = b; end = a; }

        for(int i=start; i<=end; i++){
            answer += i;
        }

        return answer;
    }
}

 

for문을 두 번 돌릴까 하다가 나름 머리 쓴다고 start, end 변수를 사용했다.

a랑 b가 수가 같아도 값이 잘 나오기 때문에 if(a == b) 는 사실상 필요 없었다.

 

다른사람 코드1

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

 

두둥.. 프로그래머스에 등차수열의 등장이라..

후.. 분명 고등학교 나왔는데 너 좀 생소하다... 댓글 안 봤으면 등차수열 인지도 몰랐을듯ㅎㅎ

 

 

다른사람 코드2

class Solution {
  public long solution(int a, int b) {
      long answer = 0;

        int start = Math.min(a, b);
        int end = Math.max(a, b);

        for (int i = start; i <= end; i++) {
            answer += i;
        }

        return answer;
  }
}

 

가장 맘에 들었던 코드

나와 비슷하게 start와 end 변수를 만들어서 Math 라이브러리의 min(), max() 함수를 사용해줬다.

내 코드보다 더 깔끔하고 보기 좋은듯. 기억하자 Math...