CodingTest/Programmers

[프로그래머스 Lv 1] 두 정수 사이의 합

남쫑 2024. 11. 7. 10:05

코딩테스트 문제를 풀면서 정답률이 70%인 문제를 기준으로 그보다 낮은 문제들만 블로그에 정리하고 있는데

이 문제는 간단한 문제지만 내가 생각하지 못했던 풀이를 알게되어 감탄이 나와 정리하고자 한다.

 

링크

https://school.programmers.co.kr/learn/courses/30/lessons/12912

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 요약

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수를 완성한다.

a와 b의 대소 관계는 정해져 있지 않으며 a와 b가 같은 경우는 둘 중 아무 수나 리턴한다.

 

입출력 예시

 

알고리즘 풀이 순서

나는 단순히 a <= b인 케이스, a > b인 케이스를 나누어 for문으로 두 정수의 합을 계산했다.

 

하지만 다른 풀이를 보면서 등차수열의 합 공식을 사용한 정답 코드를 보았고 

이 방법이 좀 더 문제의 취지에 부합하는 깔끔한 코드라고 생각하여 두 코드 모두 정리하였다.

 

코드

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        
        if (a <= b) {
            for (int i = a; i <= b; i++) {
                answer += i;
            }
        }
        else {
            for (int i = b; i <= a; i++) {
                answer += i;
            }
        }
        
        
        
        return answer;
    }
}
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;
    }
}

'CodingTest > Programmers' 카테고리의 다른 글

[프로그래머스 Lv 1] 2016년  (7) 2024.11.06
[프로그래머스 Lv 1] 폰켓몬  (6) 2024.11.05