개발자/프로그래머스

자바_프로그래머스_두 정수 사이의 합

푸루닉 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= 큰 수
  • 등차수열의 합 공식으로 깔끔한 풀이를 만들어냈다.