본문 바로가기

프로그래머스

[코딩테스트] 230916_나누어 떨어지는 숫자 배열, 음양 더하기

728x90

강의 내용 정리해야 하는데 집중력 떨어져서 늦은 밤에 도망치듯 놀러 온 코테,,,, 잠시 힐링 타임으로 코테 조금만 풀고 자야지...☺️

 

 


나누어 떨어지는 숫자 배열

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

 

 

 


음양 더하기

function solution(absolutes, signs) {
    var answer = 0;
    let Sindex = 0;
    let Aindex = 0;
    while(Sindex <= signs.length-1){
        if(signs[Sindex] == false){
            let num = absolutes[Aindex] * -1
            answer += num
            Sindex++
            Aindex++
        }
        else {
        answer += absolutes[Aindex]
        Sindex++
        Aindex++
        }
    }
    return answer;
}

뭔가 더 짧게 할 수 있었을거 같은데.... 제한 조건에 ' absolutes 모든 수는 각각 1 이상 1,000 이하입니다. ' 라는 조건이 있었다. 그 말은 배열의 수들이 절댓값이라 음수가 들어 올 수 없다는 뜻이므로, false인 경우에만 요소를 음수처리만 해주면 된다는 뜻이다. 처음엔 정수의 음수 양수를 반대로 반환해주는 메소드가 있을까 고민했지만, 조건이 있어 그럴 필요가 없었다! 

찾다보니 Math.abs() 메소드가 있어 이 게시물에 짧게 적어보자면, 매개변수로 받은 수의 절댓값을 반환해주는 메소드이다. 따라서 음수인 수는 양수로 반환받을 수 있지만, 양수의 수의 절댓값은 양수이므로 음수의 수는 받을 수 없다. 만약 양수의 수를 음수로 반환받고 싶다면 위의 풀이처럼 ' 수 * -1 ' 처리를 해주면 된다.

728x90