[프로그래머스] Lv 1. 나누어 떨어지는 숫자 배열

morecodeplease·2024년 3월 19일
0

프로그래머스 Lv 1

목록 보기
17/19
post-thumbnail

🌭 문제 설명

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

🍗 제한 사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.

🎁 입출력 예시

  • 입출력 예#1
    arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

  • 입출력 예#2
    arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

  • 입출력 예#3
    3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.


😎 나의 풀이

function solution(arr, divisor) { 
  let 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.sort((a, b) => a - b);
}
  1. 빈 배열 answer 초기화
  2. 배열 순회 하면서 각각 인덱스 값과 divisor로 나눈값이 나누어 떨어지면 answerindex요소 push
  3. 각각 인덱스 값과 divisor로 나눈값이 나누어 떨어지지 않아서 answer의 길이가 0이면(요소가 없으면) answer에 -1을 push
  4. answer의 값을 sort로 오름차순 정렬 후 return

🧵 다른 풀이

function solution(arr, divisor) { // 원래 내가 풀려고 했던 풀이 (map)
    let answer = []; 
    arr.map((v) => { 
      v % divisor === 0 && answer.push(v);
    })
    return answer.length ? answer.sort((a, b) => a - b) : [-1]; 
}
  1. 빈배열 생성
  2. map으로 arr순회 후 각 요소가 divisor로 나누어 떨어지면 answerpush
  3. answer 배열에 요소가 있으면 오름차순 정렬 후 return , 없으면 [-1]을 return

원래 map으로 풀 생각 이었지만 코드가 잘 생각이 안나서 for문으로 풀긴 했는데 다른 분의 map풀이를 보고 사이다를 마신기분💊

profile
Everyday's a lesson

0개의 댓글