문홍의 공부장

[Java] 프로그래머스 Lv.1 두 정수 사이의 합 풀이 본문

알고리즘/프로그래머스

[Java] 프로그래머스 Lv.1 두 정수 사이의 합 풀이

moonong 2020. 2. 3. 17:02
반응형

문제 설명

두 정수 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의 대소관계는 정해져있지 않습니다.

나의 풀이

연습문제라 그냥 머리 속에 가장 먼저 떠오른 쉬운 방법으로 해결했다.
다른 사람의 풀이를 보니 대다수의 사람들이 나와 같은 방법으로 풀었더라. 몇 가지 오..! 싶은 풀이는 아래에서 정리.

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

다른 사람의 풀이

수학 공식을 이용한 풀이

1
2
3
private long sumAtoB(long a, long b) {
        return (b - a + 1* (a + b) / 2;
}
cs


삼항연산자 & 반복문을 이용한 풀이
temp 변수 대신 삼항연산자를 이용하여 반복문의 시작과 끝 값을 제어했다.
항상 for loop을 쓸 때 기본 포맷(for (int i = 0; i < args.length; i++))으로만 써서 이런식으로 조금만 생각하면 될 것들도 잘 못하는 것 같다. 연습이 필요하다..

1
2
3
4
5
6
7
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
반응형