TIL

오늘 한 것과 알고리즘

oceanflow 2025. 2. 4. 23:32

오늘은 schadule project를 마무리하고 schadule project에 대한 과제 해설을 들었다.

과제를 진행하며 강의를 듣고 과제를 진행해야 하는데 강의의 내용을 이해하기에 어려움이 있었고

또한 설이라는 명절이 있어 공부에 있어 집중하지 못한 것 같다. 오늘부터 다시 마음을 다잡고 공부를 해야 겠다.

필수 과제는 진행하였으나 아쉬운 점이 많았다.

 

오늘 푼 알고리즘은 <두 정수 사이의 합>이다.

 

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

예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 반환하게된다.

 

처음에는 a와 b를 비교하여 큰 수를 찾아 for문을 돌려 해결하려 하였으나

더 간결한 방법을 찾아 내었다.

등차 수열의 합 공식을 활용하여 두 정수 사이의 모든 정수 합을 구하였다.

public class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        
        int start = Math.min(a, b);
        int end = Math.max(a, b);
        
        answer = (long)(end - start + 1) * (start + end) / 2;
        
        return answer;
    }
}

 

Math.min()과 Math.max()를 사용하여 입력값의 대소 관계를 알아내어 각 각 start(첫항)와 end(마지막 항)에 넣어주었다.

제한 조건에 a와 b의 대소관계가 정해져있지 않는다고 되어있기 때문이다.

대소 관계를 알아 내었기에 항의 개수와 첫 항과 끝 항의 합을 알아내어 등차 수열의 합 공식을 이용할 수 있게 되었다.

항의 개수 : end - start + 1

첫 항과 끝 항의 합 : start + end

등차 수열의 합 공식 : (항의 개수 x (첫 항 + 끝 항)) / 2

 

'TIL' 카테고리의 다른 글

IOC/DI  (0) 2025.02.06
SOLID 원칙  (1) 2025.02.05
자연수 뒤집어 배열로 만들기  (1) 2025.01.24
SQL NULL 처리하기  (2) 2025.01.23
스프링 프레임워크 기본 개념  (0) 2025.01.22