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 |