본문 바로가기
Computer/Algorithm_Java

[Programmers] 두 정수 사이의 합 (Success)

by HJ0216 2023. 9. 21.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
    public long solution(int a, int b) {
        
        // a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수
        // a와 b가 같은 경우는 둘 중 아무 수나 리턴
        
        long answer = 0;
        
        if(a==b) return answer = a;
        
        int max = a > b ? a : b;
        int min = a > b ? b : a;
        
        while(max>=min){
            answer += max--;
        }
        
        return answer;
    }
}
 
 

🤔 해설

1. int max = a > b ? a : b;

    - a와 b의 대소관계가 정해져 있지 않으므로, max와 min 구별

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public long solution(int a, int b) {
        
        // a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수
        // a와 b가 같은 경우는 둘 중 아무 수나 리턴
        
        long answer = sumAtoB(Math.min(a, b), Math.max(b, a));;
        
        return answer;
    }
    
    private long sumAtoB(long a, long b) {
        return (b - a + 1* (a + b) / 2;
    }
}
 
 

1. return (b - a + 1) * (a + b) / 2;

    - 등차수열 합 공식

2. private long sumAtoB(int a, int b) { ... }

    - sumAtoB의 return 값이 int값을 벗어나므로 매개변수를 long으로 넘겨줘야 함

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr