Algorithm 4

Ted·2022년 5월 16일
0

Algorithm

목록 보기
4/7
post-thumbnail

문제

문제 코드

function solution(arr, divisor) {
    var answer = [];
    return answer;
}

내 코드 풀이

function solution(arr, divisor) {
    var answer = [];
    for(i=0; i<arr.length; i++) {
      if(arr[i] % divisor == 0) {
        answer.push(arr[i]);
      }
    }
    if(answer.length == 0) {
      answer.push(-1);
    }
    answer.sort((a,b) => a - b);
    return answer;
}

사용된 문법(-자바스크립트 문법 part 1)

  1. .push
  2. .sort() /// 오름차순
  3. for 문
  4. 사칙연산 % /// 나누고 남은 나머지가 몇이냐 의미.
  5. .length /// 이 앞의 것 배열 안에 있는 값 갯수 ( 길이 )
  6. 비교문 일 땐 부등호 == 두 개 쓴다. (if)

나의 착오

  1. 문제에서 앞서 말했듯이 이 함수의 [5,10] 배열로 된 값을 찾는 것.
    그래서 위에 var answer = []; 이렇게 써있었던 것이다. 그냥 값 5 만 찾으라고 했다면 var answer =0;이 됐을 것. 그 이전 문제들이 원하는 답을 비교해보니
    var answer = 이 뒤에 뭐가 쓰여야 되는지 알게 됐다.
  1. answer.push(arr[i]) 왜 뒤에 return answer(arr[i])로 끝나는 게 아니고 push가 들어가는지 이해가 안 됬었는데 이 이유 또한 1번과 비슷하다.
    이전 문제들이었다면 그냥 값을 내면 그만이므로 간단히 return으로 끝냈겠지만
    이 문제의 답은 [] 배열 안에 숫자가 들어간 [5,10]이 답이었으므로 나온 값을 내가 마지막에 배열 안에 push를 해줘야 답과 동일해진다.

  2. .sort()를 뒤에 붙히면 무조건 배열 안의 값이 정렬되는지 알았는데 그건 배열 안의 값이 [3,2,1] 이런 식으로 모두 1의 자리 숫자일 때만이고 값이 [11, 2,32] 이런 식으로 되버리면 컴퓨터가 이것 또한 숫자의 앞자리에 맞게 배열을 정리시키므로 배열이 꼬이게 된다. 그러므로 배열 안의 값이 [3,2,1] 이런 식으로 한 자리가 아닐 경우가 다반사니까 뒤에 function을 넣어서 내가 원하는 오름차순으로 정확히 바꿔줘야한다.
    (오름차순, 내림차순 또한 자바스크립트 문법 part 1에 있다.)

profile
cording, arsenal, book, color

0개의 댓글