개발자/프로그래머스
자바_프로그래머스_두 정수 사이의 합
푸루닉
2022. 11. 23. 18:03
https://github.com/pulunick/programmers-and-baekjun/blob/main/Quiz12912.java
GitHub - pulunick/programmers-and-baekjun
Contribute to pulunick/programmers-and-baekjun development by creating an account on GitHub.
github.com
1. 문제풀이
static class Solution6 {
public long solution6(int a, int b) {
long answer = 0;
if(a > b) {
for(long i=b; i <= a; i++) {
answer += i;
}
}else {
for(long i=a; i <= b; i++) {
answer += i;
}
}
return answer;
}
}
static class Solution7 {
public long solution7(int a, int b) {
// for문 안에 삼항연산자 가능
long answer = 0;
for (int i = ((a < b) ? a : b); i <= ((a < b) ? b : a); i++)
answer += i;
return answer;
}
}
static class Solution8 {
public long solution8(int a, int b) {
// 가장 작은 수 Math.min(변수, 변수) 가장 큰 수 Math.max
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
// a는 가장 작은 수 b는 가장 큰 수
private long sumAtoB(long a, long b) {
//등차수열의 합 공식
return (b - a + 1) * (a + b) / 2;
}
}
}
2. 미흡한 점 + 새로운 풀이
- 먼저 나의 경우 a가 b보다 클경우 for문 하나 b가 a보다 클 경우 for문 하나를 넣어 문제를 풀었다.
- 위 풀이를 삼항연산자를 통해 더 단축 시킨것이 solution7
- solution8은 Math.max/min을 이용하여 가장 큰 수와 가장 작은 수를 구했고,
- 인자값을 함수에 매개변수로 보냈다 long a = 작은수 long b= 큰 수
- 등차수열의 합 공식으로 깔끔한 풀이를 만들어냈다.