Algorithm/Programmers

[Programmers] 프로그래머스 12912 두 정수 사이의 합 - java

담크 2021. 7. 9. 21:42

이번에는 그래도 좀 그나마 쉬워 보이는 문제로 가져왔습니다.

쉬운 문제인 만큼 2가지의 풀이를 준비했는데요 (푸는 방법은 정~~~~말로 많아요!!)

자! 먼저 문제를 보면

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

 

이렇게 나와있습니다. ㅎㅎ 상당히 짧죠?

 

 


문제풀이

case 1

public static long solution(int a, int b) {
		long answer = 0;

		if (a > b) {
			for (int i = b; i < a + 1; i++) {
				answer += i;
			}
		} else if (a < b) {
			for (int i = a; i < b + 1; i++) {
				answer += i;
			}
		} else if (a == b) {
			answer = a;
		}
		return answer;
	}

여기서 문제의 조건을 보면 a와 b의 대소관계가 정해져 있지 않으므로 ( a > b ) 일 때와 ( b > a ), ( a == b ) 일 때 이렇게 3가지로 나누어서 접근해 풀었습니다.

a, b는 정수로 작은수부터 큰 수까지의 합을 구하는 거라 단순 반복문으로 나열해 풀었습니다.

 

 

case 2

public static long solution(int a, int b) {
		long answer = 0;
		long min = Math.min(a, b);
		long max = Math.max(a, b);

		for (long i = min; i < max + 1; i++) {
			answer += i;
		}

		return answer;
	}

이번에는 함수를 사용하여 풀었는데요

java.lang.Math를 이용하여 순서 상관없는 2개의 수 a, b에 최솟값, 최댓값을 정하고

마찬가지로 작은수에서 큰 수까지의 정수를 반복문을 사용해 계속 더해줬습니다.

 

 

앞에도 말씀드렸지만 문제를 풀수있는 방법은 정말로 많이 있습니다.

그래도 좀 더 코드가 간편해 보이고, 유효성이 좋고 안 좋고는 정말 많이 해보면서 함수에 관한 것을 익혀놓는 것이 중요한 거 같아요 ㅎㅎㅎ 요새는 최소한의 조건으로 코딩 테스트를 보는 회사들이 많아지고 있다고 하니까 나중에 취업을 위해서라도 꾸준히 공부하는 것이 좋은 것 같습니다.