View

[JS] 나누어 떨어지는 숫자 배열

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

제한사항 : n과 m은 각각 1000 이하인 자연수입니다.

 

 


 

 

뭔가 코드가 더러운데 그래도 처음에 이렇게 생각햇으니깐 작성했다. 나중에 리펙토링을 한번 진행해도 좋을것같다.

 

1. for문으로 인자 arr만큼 돌면서 arr[i]와 인자 divisor로 나머지값을 구한다.

2. 만약에 나머지 값이 없다면 answer에 집어넣는다.

3. 만약에 answer가 비어있다면 -1를 넣어 반환한다.

4. 오름차순 정렬 후 반환한다.

 

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

 

 

 


 

[JS] 행렬의 덧셈

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

제한사항 : n과 m은 각각 1000 이하인 자연수입니다.

 

 


 

 

처음엔 간단한 문제인줄 알았는데 이상한 부분에서 헤맸다. j의 길이를 arr1에서 빼야하는지, arr2에서 빼야하는지 헤매다가 결국 인터넷 검색으로 정답을 찾았다ㅠㅠ 생각을 정리하면서 코드를 쓰다보니 문제점이 생기면 막혀버린다. 생각을 정리하고 쓰는 버릇을 들여야지...

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

 

 

 

 


 

 

[JS] 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

제한사항 : n은 1 이상 100,000,000 이하인 자연수입니다.

 

 


 

 

문제 제목만 봤을때는 엄청 어려운 문제일줄 알앗는데, 그냥 자연수를 3진법으로 바꾸고 뒤집은 후, 10진법으로 변경하는 문제였다. 진법변경은 구글링으로 검색해보면 바로 나온다. 해당 포스팅을 참고하면 더 이해하기 쉽다!

function solution(n) {
    let test = n.toString(3).split('').reverse().join(''); 
    let answer = parseInt(test, 3);
    return answer;
}

 

 

 

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

Share Link
reply
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31