230217_TIL

reggias·2023년 2월 20일
0

I learned

목록 보기
41/62

배열의 곱셈을 하는 문제였는데 map 함수를 모르고 for문을 이용해 하나하나 곱해주려고 했지만 생각만큼 잘 되지않아 배열의 곱셈에 대해 검색해 map 함수를 이용하였음. 그리고나서 처음에 하려했던 for문을 이용한 배열의 곱셈도 알아냄

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

What was the problem

머릿속에서 생각한대로 for문이 만들어지지가 않음.

Things i tried

맨 처음 만든 코드

function solution(numbers) {
    let answer = [];
    answer = 2 * answer
    return answer;
}
  1. 매개변수인 numbers가 없어서 안됨

두번째 만든 코드

function solution(numbers) {
    let answer = [];
  	answer = 2 * numbers
    return answer;
}
  1. numbers로 바꾸고보니 애초에 배열을 가져다가 2를 곱한다고 해서 그게 연산이 되는지 확인부터 해야했음
a = [1,2,3,4,5]
b = 2 * a
console.log(b) // NaN

안됨. 배열 안에 있는 값을 for문으로 빼낸 후 각각 곱셈해주어야겠다고 생각함

세번째 만든 코드

function solution(numbers) {
    let answer = [];
    for(i=0; i<=4;i++) {
        answer = 2 * numbers[i]
    }
    return answer;
}

console.log(solution([1,2,3,4,5])) // 10

3.for문 안에서 i-1 만큼 돌고 2 * numbers[i] 이 배열인 answer 안에 각각 들어가서 [2,4,6,8,10]이 나올줄알았는데 마지막 10만 나왔음. for문 안에 있는 answer 를 고쳐야할 것같은데 내 머리로는 어떻게 고쳐야할지 도저히 모르겠음. 생각해보니 배열의 길이가 달라지면 for문의 조건식도 변경해줘야하는구나.

how did you solve it?

다른 사람의 풀이를 참고함

function solution(numbers) {
    const answer = [];
    for(let i=0; i<numbers.length; i++) {
        answer[i] = numbers[i]*2;
    } return answer
}

What new did you learn?

내가 해결하지 못한 두가지 문제점이었던 매개변수의 길이가 5보다 크면 옳은 답을 도출하지 못하는 부분은 for문의 조건식에서 length를 사용함으로 해결하였고 배열의 값들을 각각 2 곱해주어 다시 각 배열로 집어넣는 작업은 answer[i] 로 해결해주었음을 알 수 있었음.

또한 map 함수를 이용해 배열의 곱셈을 할 수 있다는 것도 알게 되었고 map 함수를 이용한 코드도 만들어보았음.

function solution(numbers) {
    const answer = numbers.map(x => x * 2)
    return answer;
}

map함수 참고링크

profile
sparkle

0개의 댓글