오늘은 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 |