Algorithm/Java

프로그래머스 - 두 정수 사이의 합 java

고고마코드 2022. 6. 14. 20:00
반응형
12912번 문제

코딩테스트 연습 - 두 정수 사이의 합 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 두 정수 사이의 합

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

programmers.co.kr


풀이
  • 1번 풀이
public long solution(int a, int b) {
	long sum = 0;
	for(int i=Math.min(a, b); i<=Math.max(a, b); i++) {
		sum += i;
	}
	return sum;
}

두 값(a, b) 중 작은 수부터 큰 수까지 순차대로 합을 구하는 문제입니다.

Math Class 의 메소드를 활용해 작은 수와 큰 수를 구해서 순차대로 더해 합을 구해서 쉽게 풀 수 있었습니다.

public static int min(int a, int b)

: a, b 중 작은 수를 반환

: (a <= b) ? a : b  와 같다.

public static int max(int a, int b)

: a, b 중 큰 수를 반환

: (a >= b) ? a : b  와 같다.

 

✔ 테스트 케이스 실행 속도: 0.07 ~ 17.5ms

 

  • 2번 풀이
public long solution(int a, int b) {
	return sequenceSum(Math.min(a, b), Math.max(a, b));
}

public long sequenceSum(long min, long max) {
	return (max - min + 1) * (min + max) / 2;
}

양 끝의 수 사이의 모든 수를 더하는 문제는 등차수열의 합의 공식으로도 풀 수 있습니다.

양끝 항의 값이 무엇인지만 안다면 등차수열의 합 공식으로 쉽게 풀 수 있습니다.

✅ 등차수열의 합: (항의 개수) * (양 끝항의 값의 평균)

 

✔ 테스트 케이스 실행 속도: 0.05 ~ 0.13ms

역시 수학 공식으로 풀면 입력에 어떤 값이 오더라도 실행 속도가 매우 빨랐습니다.

반응형