코딩테스트 문제해결 14

Seong Hyeon Kim·2022년 5월 18일
0

알고리즘

목록 보기
5/20

[기초코드]

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

[문제해결 과정 1]

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

    for(let i=1; i<=arr.length; i++)

    if(arr[i]%divisor==0){
        answer.push(arr[i])
    }  else if ((arr[i]%divisor!==0)){
    	answer.push(-1)
    }
    return result;
}
  • arr배열 내부의 숫자를 divisor로 나눠서 나머지가 0 이라면 출력하라는 내요을 보자마자 if 문과 for문을 사용해 풀 생각이 들었습니다.

  • 우선 for문으로 arr의 길이만큼 반복시키길것을 설정하고
    arr 를 divisor로 나눠서 나머지가 0일때 그 값을 넣어주기 위해 .push 함수를 사용하였습니다.

  • 그리고 else문으로 만약 값이 없을 시 -1 을 넣어줘야지 라는 식으로 코드를 작성하였지만, 역시나 오류 투성이였습니다.

  • 저렇게 작성해버리면 나눠어떨어지지 않는 수가 하나라도 있다면 결과값이 모두 -1이 될테니까요


[문제해결 과정 2]

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

    for(let i=0; i<=arr.length; i++)

    if(arr[i]%divisor===0){
        answer.push(arr[i])
    }
    if(answer.length ===0){
        answer.push(-1)
    }
    
    
    return answer;
}
  • 그래서 새로운 if문으로 작성하였고 알고ㅂ니 == 가 아니라 ===를 써야됬다는걸 착각하여 잘못적어서 추가적으로 수정하였습니다.

  • 이제 좀 잘되나 싶더니 이번에는 배열의 순서가 문제여서 배열의 순서를 바꿔주는 함수 sort 를 추가로 사용하였습니다


[출처 : https://dudmy.net/javascript/2015/11/16/javascript-sort/]

  • 적힌대로 사용하고 싶지만 배열내에서 사용할려면 좀더 다른식으로 적어야 하는데

[예시]

그렇지 않아도 sort 함수 사용하는게 조금 어려웠는데 정리를 쉽게 해놓은 자료를 찾았고 여기에 적힌대로 새롭게 작성해 보았씁니다.


[최총코드]

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

    for(let 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;
}

이러한 식이 되겠다.


[비슷한 답안]
function solution(arr, divisor) {
    var answer = [];
    for(let 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;
}
  • 이분은 answer 에 처음부터 sort 를 붙일수 있다는 예시로 참고해 보았씁니다.

[다른 답안들] ```javascript function solution(arr, divisor) { var answer = arr.filter(v => v%divisor == 0); return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b); } ``` 아마도 filter 함수와 삼항연산자를 같이 사용해서 푼 답인것 같습니다.
profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 백엔드 개발자

0개의 댓글