알고리즘/프로그래머스

없는숫자더하기(JAVA)

mrban 2022. 1. 15. 11:15

1. 문제

0부터 9까지 랜덤한 숫자가 들어있는 int 배열 numbers를 매개변수로 받아 0부터 9까지 숫자들 중에서 빠져있는 숫자들의 합을 return하시오. 예를 들어 int[] numbers = {0, 1, 2, 3, 4, 6, 7, 8}이라면 5+9 = 14를 return하면 된다.

 

2. 제한
numbers의 모든수는 다릅니다.
 
3. 정답
class Solution {
    public int solution(int[] numbers) {
        int answer;
        int numbers_sum = 0;

        for(int i = 0; i < numbers.length; i++) {
            numbers_sum += numbers[i];
        }
        answer = 45 - numbers_sum;
        return answer;
    }
}

4. 설명

4-1. numbers배열의 길이만큼 for문을 돌리면서 배열안 숫자들의 합을 구한다.

4-2. 0부터 9까지의 합은 45이므로 45에서 합을 뺀 값을 return한다.

 

5. 참고

5-1. 지금은 코드가 짧기 때문에 answer 값을 구할 때 45에서 바로 뺴는 방식을 선택했지만 사실 좋은 코드는 아닌 것 같다는 생각을 했다. 코드가 굉장히 길고 복잡한 상황에서 만약 0부터 9까지의 합의 값을 바꾸고 싶었다고 생각해보자. 지금은 짧기 떄문에 45를 바꾸면 된다고 바로 생각할 수 있지만 코드가 복잡하다면 코드를 수정해야하는 입장에서는 대체 어떤 값을 바꿔야할지 감이 안올수도 있다. 따라서 변수를 하나 선언하고 그 변수에 값을 설정하여 answer = 변수명 - numbers_sum; 으로 바꾸는 것이 코드를 수정해야하는 입장에서 더 편할 것으로 생각한다.

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

x만큼 간격이 있는 n개의 숫자(JAVA)  (0) 2022.01.15
평균구하기(JAVA)  (0) 2022.01.15
문자열을 정수로 가져오기(JAVA)  (0) 2022.01.15
음양더하기(JAVA)  (0) 2022.01.15
두 정수 사이의 합(JAVA)  (0) 2022.01.14