코딩테스트 문제를 풀면서 정답률이 70%인 문제를 기준으로 그보다 낮은 문제들만 블로그에 정리하고 있는데
이 문제는 간단한 문제지만 내가 생각하지 못했던 풀이를 알게되어 감탄이 나와 정리하고자 한다.
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12912
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 요약
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수를 완성한다.
a와 b의 대소 관계는 정해져 있지 않으며 a와 b가 같은 경우는 둘 중 아무 수나 리턴한다.
입출력 예시

알고리즘 풀이 순서
나는 단순히 a <= b인 케이스, a > b인 케이스를 나누어 for문으로 두 정수의 합을 계산했다.
하지만 다른 풀이를 보면서 등차수열의 합 공식을 사용한 정답 코드를 보았고
이 방법이 좀 더 문제의 취지에 부합하는 깔끔한 코드라고 생각하여 두 코드 모두 정리하였다.
코드
class Solution {
public long solution(int a, int b) {
long answer = 0;
if (a <= b) {
for (int i = a; i <= b; i++) {
answer += i;
}
}
else {
for (int i = b; i <= a; i++) {
answer += i;
}
}
return answer;
}
}
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;
}
}'CodingTest > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv 1] 2016년 (7) | 2024.11.06 |
|---|---|
| [프로그래머스 Lv 1] 폰켓몬 (6) | 2024.11.05 |