알고리즘 문제 "없는 숫자 더하기"를 풀어보았습니다.
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
입출력 예 설명
입출력 예 #1
5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #21, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
문제가 numbers에 없는 숫자를 찾는 것이 아닌 없는 수를 더한 값이 몇이냐를 묻는 문제이기 때문에 제한 사항에 따라 0~9까지 더한 값(45)에서 입력된값을 빼주면 답이 나온다.
class Solution {
public int solution(int[] numbers) {
//0~9까지의 합 - 0~numbers.length 까지의 합
int answer = 45;
//numbers에 담긴 입력값수 많큼 for문을 돌리기
for(int i = 0; i<numbers.length; i++){
// 45 -= numbers[입력된 numbers길이만큼 numbers의 index 0번부터의 값을 불러와서 빼주기]
answer -= numbers[i];
}
return answer;
}
}
0~9까지의 합인 45를 answer에 담아준다음. numbers에 입력된 값을 빼주는 방식으로 문제를 해결하면 되는데 이것을 입출력 예 #1번 으로 가정하고 입력값을 코드에 대입해보겠다
number result 입출력예 #1 [1,2,3,4,6,7,8,0] 14 numbers.length = 8
class Solution {
public int solution(int[] numbers) {
//0~9까지의 합 - 0~numbers.length 까지의 합
int answer = 45;
//numbers에 담긴 입력값수 많큼 for문을 돌리기
for(int i = 0; i<8; i++){
// 45 -= numbers[입력된 numbers길이만큼 numbers의 index 0번부터의 값을 불러와서 빼주기]
answer -= numbers[0]; 45 - 1 = 44
answer -= numbers[1]; 44 - 2 = 42
answer -= numbers[2]; 42 - 3 = 39
answer -= numbers[3]; 39 - 4 = 35
answer -= numbers[4]; 35 - 6 = 29
answer -= numbers[5]; 29 - 7 = 22
answer -= numbers[6]; 22 - 8 = 14
answer -= numbers[7]; 14 - 0 = 14
}
return answer;
}
}
위 코드처럼 for문이 반복 실행이 되며 결국 answer는 14가 되어 정답이 된다.