반응형
12912번 문제
코딩테스트 연습 - 두 정수 사이의 합 | 프로그래머스 (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
역시 수학 공식으로 풀면 입력에 어떤 값이 오더라도 실행 속도가 매우 빨랐습니다.
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 헤비 유저가 소유한 장소 MySQL/Oracle (0) | 2022.06.17 |
---|---|
프로그래머스 - 같은 숫자는 싫어 java (0) | 2022.06.16 |
프로그래머스 - 문자열 내 p와 y의 개수 java :: 12916 (0) | 2022.06.10 |
프로그래머스 - 이상한 문자 만들기 java :: 12930 (0) | 2022.02.12 |
프로그래머스 - 자연수 뒤집어 배열로 만들기 java :: 12932 (0) | 2022.02.08 |