문제 설명:
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
구현코드:
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int[] num= new int[10];
for(int i:numbers){
num[i]=1;
}
for(int i=0;i<10;i++){
if(num[i]!=1)
answer+=i;
}
return answer;
}
}
코드설명:
매개변수로 전달받은 numbers 의 길이는 최대 9이기 때문에 10으로 설정하고 numbers 를 반복한다. 이때 만약 numbers 값으로 0,1,2,4,5,7,8 이 들어있다면 num 배열에 1을 넣는다 즉, [1,1,1,,1,1,,1,1,]이렇게 들어가게된다.그리고 for 문0부터9까지 돌면서 배열에 1 이 들어있지 않다면 값을 더해준다.
다른획기적인 방법을 찾던도중 다른사람의 풀이에서 좋은 풀이를 보아서 가져왔다.
class Solution {
public int solution(int[] numbers) {
int sum = 45;
for (int i : numbers) {
sum -= i;
}
return sum;
}
}
값을 미리 45 로 맞춰놓은 후 값을 빼주는 방식이다. 이렇게도 사고할수있다는 생각에 웃게되는 풀이인거같다.