Level. 1
문제
풀이
class Solution {
public long solution(int a, int b) {
long answer = 0;
int max = Math.max(a,b);
int min = Math.min(a,b);
for(int i = min; i <= max; i++){
answer += i;
}
return answer;
}
}
Math클래스의 max, min 메서드를 사용하여 최댓값, 최솟값을 구하여 두 숫자 사이에 있는 모든 값을 더해주었다.
http://www.tcpschool.com/java/java_api_math
다른 사람 풀이
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;
}
}
등차수열의 합 공식을 사용한 풀이이다.
등차수열
연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다.
예를 들어 1, 3, 5, 7, 9, ...은 등차수열이다
등차수열의 일반항
- n번째항 = a+(n−1)d
a : 첫째 항
d : 공차
등차수열의 합
- 첫째항(a)부터 마지막항(b)까지 n개의 항(b-a+1)의 합을 구하는 공식
- n * (a + b ) / 2
-> (b - a + 1) * (a + b ) / 2
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스] 문자열을 정수로 바꾸기 / valueOf , int와 Integer (0) | 2023.04.29 |
---|---|
[프로그래머스] 가운데 글자 가져오기 - substring (0) | 2023.04.11 |
[프로그래머스]문자열 내림차순으로 배치하기 (0) | 2023.04.11 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2023.04.09 |
[프로그래머스] 나누어 떨어지는 숫자 배열/ stream (0) | 2023.04.08 |