초기 코딩
function solution(numbers) {
var answer = -1;
return answer;
}
배열을 아직 안배워서 공부했다.
let 배열 = [0,1,2]; <-선언
배열[1] -> 1 <- 호출
첫 아이디어
numbers의 배열 크기가 다르므로 크기를 구한다.
numbers배열의 각 인자를 0~9까지의 숫자와 모두 대조해본다 -> for문 사용 -> 대조해보기 위해 0~9가 들어간 배열을 만든다.
없는 수를 더해야 하므로 대조를해서 같을땐 무시하고 다를때 더해주면 될 줄 알았지만 실행하면 300이 넘게나온다.
왜냐하면 존재하지 않는 특정수만 더하고 존재하면 무시해야하는데 numbers[0]===9라면 처음에 9가 존재하지만
1~8까지는 같지않으므로 다 더하고있었다.
다음 아이디어
없는 수를 특정하기 어려운데 반해 있는 수는 특정하기 쉬워서
1~9까지의 합인 45에 있는 수를 빼면 없는 수의 합이므로 이렇게 풀었다.
나의 코드
function solution(numbers) {
var answer = -1;
let onenum=[0,1,2,3,4,5,6,7,8,9];
let i, j;
let allsum =45;//생각의 전환으로 없는 수를 빼지않고 모두 더한것에서 있는 수를 뺐다.
for(i=0; i<numbers.length;i++){ //9로 해도 되지만 효울적인 연산을 위해 길이만큼만
for(j=0;j<10;j++){
if(numbers[i] === onenum[j]){
allsum-=j;
}
}
}
answer = allsum;
return answer;
}
이렇게 제출을 했고 답이 맞았다.
그런데 numbers 배열안에 숫자가 중복되는것이 없으므로 굳이 이중for문으로 하나하나 대조해볼 필요없이
그냥 배열안에 있는 수를 다 더하고 45에서 빼면 될것같아서
최종 코드
function solution(numbers) {
var answer = -1;
answer=0;
for(let i=0; i<numbers.length;i++){ //9로 해도 되지만 효울적인 연산을 위해 길이만큼만
answer+=numbers[i];
}
return 45-answer;
}
로 해봤는데 이것도 됐다.
'코딩 테스트 > 프로그래머스 level1' 카테고리의 다른 글
x만큼 간격이 있는 n개의 숫자 (0) | 2021.10.18 |
---|---|
직사각형 별찍기 (0) | 2021.10.17 |
짝수와 홀수 (0) | 2021.10.17 |
폰켓몬 (0) | 2021.10.11 |
시작 (0) | 2021.10.07 |