행렬의 덧셈

강석우's avatar
Jun 23, 2024
행렬의 덧셈

문제 : 행렬의 덧셈

사용 메서드 : for() or map()

풀이 과정 :

  1. 행렬을 배열에서 나타내면 2차원 배열

  2. 행렬의 덧셈을 위해서는 내부의 인자까지 들어가야함. => 이중 for문

  3. for문의 내부에서 덧셈을 통해 최종 결과 값을 answer에 저장해주기

for문 version

function solution(arr1, arr2) {
    let answer=[[]];
    for(let i = 0; i<arr1.length; i++){
        answer[i] = []
        for(let j=0;j<arr1[0].length;j++){
            answer[i][j] = arr1[i][j]+arr2[i][j]
        }
    }
    return answer;
}

map version

function solution(arr1,arr2){
    let answer;
    answer = arr1.map((value1,index1)=> value1.map((value2,index2)=> value2+arr2[index1][index2] ))
    return answer
}

문제 : 하샤드 수

사용 메서드 : toString(), split(), reduce()

풀이 과정 :

  1. 받아온 숫자를 자릿수 별로 계산을 해주어야 한다.

    1. 숫자를 문자열로 변경한다.

    2. 변경된 문자열을 자릿수 별로 배열화 한다.

  2. 배열을 모두 더해준다.

    1. 배열 안의 인자들은 문자열이므로 형변환을 시켜준 뒤 덧셈을 진행한다.

  3. 초기 값과 덧셈 값의 나머지 판단 후 true, false를 보여준다.

function solution(x) {
    let temp = x.toString().split('')
    let sum = temp.reduce((acc,cur)=>{
        return +acc + +cur
    })
    return x%sum===0 ;
}

문제 : 콜라츠 추측

풀이 과정 :

  1. 결과 값으로 나타낼 count를 입력.

  2. while 문을 통해 조건이 만족 될때까지 무한 반복문을 돌려준다.

    1. 총 500번만 반복하면 되므로 count !== 500

    2. 숫자가 1이면 그만 둬야하므로 num !== 1

  3. 제공된 조건 대로 짝수일 때와 홀수일 때의 조건을 작성해준다.

  4. 제공된 num 값에 따라 count 또는 -1을 반환해준다.

function solution(num) {
    let count = 0;
    while(num !== 1 && count !== 500){
        if(num%2===0){
            num = num/2
        }else{
            num = num * 3 + 1
        }
        count++
    }
    return num===1 ? count : -1;
}

문제 : 수박수박수박수박수박수?

사용 메서드 : repeat()

풀이 과정 :

  1. ‘수박’ 단어 한 개는 n이 짝수일 때 나올 수 있는 단어.

    1. repeat() 메서드를 사용해 n/2만큼 ‘수박’ 단어를 반복해주자.

  2. n이 홀수일 때 ‘수’ 를 추가 적으로 붙여주자.

    1. 삼항연산자를 사용하자.

function solution (n){
    return '수박'.repeat(n/2) + (n %2 === 1 ? '수' : '')
}

Share article

algorithm-basic