반응형

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

 

 

 

** Javascript

 

 

1)

 

처음에 제출했던 풀이

 

function solution(a, b) {
    var answer = 0;
    if (a > b) {
        for (var i = b; i <= a; i++) {
        answer += parseInt(i);
    }  
    } else {
        for (var i = a; i <= b; i++) {
            answer += parseInt(i);
        }
    }
    return answer;
}

 

 

 

2) 

 

다시 푼 풀이

 

function solution(a, b) {
    let answer = 0;
    let start = (a > b) ? b : a;
    let end = (a > b) ? a : b
    for (let i = start; i <= end; i++) {
        answer += i
    }
    return answer;
}

 

 

3)

가우스의 등차수열의 합을 이용한 풀이

 

(더할 항의 개수) * (첫항 + 마지막 항) / 2

 

function solution(a, b) {
    return (Math.abs(a-b) + 1) * (a + b) / 2;
}

 

 

 

** Python

 

 

 

def solution(a, b):
    return (abs(a - b) + 1) * (a + b) / 2

 

 

 

이렇게 풀 수도 있는데 위보단 느리다.

def solution(a, b):
    if a > b:
        a, b = b, a
    return sum(range(a, b + 1))

 

 

 

** Java

 

 

long 캐스트 하지 않으면 통과되지 않는다.

 

class Solution {
    public long solution(int a, int b) {
        return (long) (Math.abs(a - b) + 1) * (a + b) / 2;
    }
}

 

 

추천 1등 풀이도 등차수열의 합을 이용하였는데 절대값을 이용하지 않고 max, min를 구해 비교하였다

 

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

 

 

 

반응형

+ Recent posts