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

AnSuebin·2022년 7월 6일
0

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

제한사항
arr은 자연수를 담은 배열입니다.
정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
divisor는 자연수입니다.
array는 길이 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)
  }
  answer.sort((a, b) => a - b)
  return answer
}
  1. sort() 함수
arr.sort([compareFunction])
  • compareFunction : 정렬 순서를 정의하는 함수
  • 첫 번째 인수가 두 번째 인수보다 작을 경우
  • 두 인수가 같을 경우 0
  • 첫 번째 인수가 두 번째 인수보다 클 경우 + 값

1) 문자정렬

let fruit = ['orange', 'apple', 'banana']
fruit.sort() 
// apple, banana, orange

2) 숫자정렬

  • 오류
let score = [4, 11, 2, 10, 3, 1]
score.sort()
 -> 1, 10, 11, 2, 3, 4
 -> ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음
  • 오름차순
score.sort((a, b) => a - b)
  • 내림차순
score.sort((a, b) => b - a)

3) object 정렬

let student = [
{ name: '안', age : 21},
{ name: '녕', age : 15},
{ name: '하', age : 14},
{ name: '세', age : 55},
]

// 이름순
// 오름차순
student.sort((a,b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)
// 내림차순
student.sort((a,b) => a.name > b.name ? -1 : a.name < b.name ? 1: 0)

nameResult = nameAge.sort(function(a,b) {
let x = a.name.toLowerCase()
let y = b.name.toLowerCase()
if (x < y) {
return -1
}
if (x > y) {
return 1
}
return 0
})

  • .toLowerCase() : 문자열을 소문자로 변환하여 반환
  • 삼항 연산자 : Boolean () ? 선택문 1 : 선택문2

// 나이순
let sortingField = "age"
// 오름차순
student.sort((a,b) => a[sortingField] - b[sortingField])
// 내림차순
student.sort((a,b) => b[sortingField] - a[sortingField])

profile
고객에게 명료한 의미를 전달하고, 명료한 코드를 통해 생산성 향상에 기여하고자 노력합니다.

0개의 댓글