[JAVA] 두 정수 사이의 합

태로미·2023년 9월 12일
0

Programmers

목록 보기
11/29
post-thumbnail

❓문제


두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.



🚫제한


  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.


💻입출력 예


abreturn
3512
333
5312













📝해결


1. min, max() 사용 누적합

class Solution {
	public long solution(int a, int b) {

		long answer = 0;

		for(int i=Math.min(a, b); i <= Math.max(a, b); i++) {
			answer += i;
		}
        
		return answer;
	}
}
  • a와 b의 대소관계가 정해져있지 않으므로 Math클래스의 min()과 max() 메서드를 사용하여 대소관계 및 범위를 정함.
    • 그 사이에 있는 수를 모두 구하는 것이므로 누적합 구하기.

2. 등차수열의 합 공식

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;
    }
}
  • solution 메서드가 실행되면 sumAtoB 메서드를 실행한 값을 return함.
  • 결과값이 long타입이므로 리턴타입과 파라미터를 long타입으로 설정.
    • 등차수열의 합 공식을 이용하여 값 return.

등차수열
- 첫째항에 일정한 수를 더해서 얻어진 항으로 이루어진 수열.
aₙ = aₙ₋₁ + d

공차
- 각 항에 더해지는 일정한 수.
d = aₙ - aₙ₋₁

등차수열의 일반항 구하기
- 첫째항이 a, 등차가 d인 등차수열의 일반항.
aₙ = a + (n-1)d (단, n은 자연수)

등차수열의 합
= (양 끝 항의 산술평균) * (항의 개수)

[참조링크] 등차수열, 등차수열의 일반항







💭마무리

  • Level_1 / 21:43
  • Point
    – min, max() 메서드로 대소관계 구분하기
    – 등차수열 개념, 일반항 및 합 구하기

우와아,,,난 이번에 문제 풀면서 나름 min, max() 메서드 생각나서 옳다구나! 하고 샤샤샥 풀었는데 등차수열의 합 공식을 이용하면 이렇게 금방 풀리는 거였다...!!!
심지어 메서드를 따로 정의해서 활용하는 것 까지ㅠㅠㅠ완벽ㅠㅠㅠㅠㅠ
매번 여러사람들의 풀이를 보며 참 여러가지를 느끼는듯ㅎㅎㅎㅎ
간만에 학교다닐 때 배웠던 등차수열에 대해서 공부했는데 어쩐지 자주 쓰일 것 같아서 공식을 따로 정리해봤다! 자주 보면서 머릿속에 넣어야지~~😊


profile
Here And Now

0개의 댓글