본문 바로가기
Algorithm/Problem_프로그래머스

프로그래머스(두 정수 사이의 합) - Java

by uyoo 2020. 5. 20.

[두 정수 사이의 합]

https://programmers.co.kr/learn/courses/30/lessons/12912

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

programmers.co.kr

 

* 로직

  • a와 b의 대소관계를 처리해 작은 수는 left, 큰 수를 right로 선언한다
  • 첫 번째 방법으로는 left는 증가하고 right는 감소하면서 answer를 누적해나간다
  • left가 right보다 같거나 커진다면 반복을 종료한다
  • 만약 left부터 right까지의 개수가 홀수개라면 -> left와 right 중 하나의 값을 answer에 더해준다

  • 두 번째 방법으로는 for문을 left부터 right까지 돌리며 answer를 누적하는 방법이다

 

// 첫 번째 방법

import java.io.*;
import java.util.*;

class Solution {
    public long solution(int a, int b) {
        long answer = 0;        
        int left = a>=b ? b : a;
        int right = a>=b ? a : b;
        int size = right - left + 1;
        
        while(left < right) {
            answer += (left++ + right--);            
        }
        if(size % 2 != 0)
            answer += left;        
        
        return answer;
    }
}

 

// 두 번째 방법

import java.io.*;
import java.util.*;

class Solution {
    public long solution(int a, int b) {
        long answer = 0;        
        int left = a>=b ? b : a;
        int right = a>=b ? a : b;
        
        for(int i=left; i<=right; ++i) {
        	answer += i;
        }
        
        return answer;
    }
}