[Java] 자바 알고리즘, "두 정수 사이의 합"

두 정수 사이의 합


문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 

예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.


제한 조건

a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.

a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.

a와 b의 대소관계는 정해져있지 않습니다.


입출력 예

return 

12 

12 


나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
  public long solution(int a, int b) {
      long answer = 0;
      if(a>b){
          int temp = b;
          b=a;
          a=temp;
      }
      for(int i = a; i<=b; i++){
          answer+=i;
      }
      return answer;
  }
}
cs


간단히 a와 b의 크기를 맞추고( 큰 숫자가 b로 가도록 ) for문을 돌려 (a부터 b까지) answer에 더해 담는다.


다른사람의 풀이 

1
2
3
4
5
6
7
8
9
class Solution {
  public long solution(int a, int b) {
      long answer = 0;
      for (int i = ((a < b) ? a : b); i <= ((a < b) ? b : a); i++
          answer += i;
 
      return answer;
  }
}
cs

- 이분같은 경우에는 삼항 연산자를 써서 제가 사용한 알고리즘을 굳이 한줄로 나타내신 경우 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
  public long solution(int a, int b) {
      long answer = 0;
      int min;
      int max;
      if(a>b){
          max=a;
          min=b;
      }else{
          max=b;
          min=a;
      }
 
      for(long i =min;i<=max;i++){
          answer += i;
      }
      return answer;
  }
}
cs


- 이분 같은 경우는 저랑 거의 똑같죠. 변수명만 다르고요. 하지만 분명한 차이점이 있습니다. 변수명이 가독성이 매우 뛰어나다는 것입니다. 변수명 하나만 보고도 a가 큰 값이었는지 b가 큰값이었는지 헷갈일 필요가 전혀 없게 만들었고, 해당 코드를 읽는 협업을 하는 동료라던지 등의 상황을 고려했을때도 매우 훌륭하다고 개인적으로 생각하는 코드 방식입니다.




댓글

Designed by JB FACTORY