Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[JavaScript] 프로그래머스 코딩테스트 입문 : 최댓값 만들기 (1) 본문

⚙️ 코딩테스트

[JavaScript] 프로그래머스 코딩테스트 입문 : 최댓값 만들기 (1)

썸머몽 2023. 3. 22. 01:31
728x90

📌  문제

정수 배열 numbers 매개변수로 주어집니다. numbers 원소 개를 곱해 만들 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

  • 0 ≤ numbers의 원소 ≤ 10,000
  • 2 ≤ numbers 길이 ≤ 100

📌  풀이

sort를 했는데도 왜 틀렸다는 건지 한참을 고민했는데 출력해보니 오름차순이 아니라 유니코드 상에서의 데이터로 정렬되는 거였다.

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

 

**오름차순 (내림차순은 b - a)

function compareNumbers(a, b) {

  return a - b;

}

 

**문자열에도 적용되는 sort를 쓰고 싶다면

function compare(a, b) {

  if (a is less than b by some ordering criterion) {

    return -1;

  }

  if (a is greater than b by the ordering criterion) {

    return 1;

  }

  // a must be equal to b

  return 0;

}

 

이렇게 쓰면 되는 거였다.

따라서 현재 내림차순으로 정렬했기 때문에 인덱스 0, 1이 가장 큰 값, 2번째로 큰 값이 된다.

📌  코드

function solution(numbers) {
    numbers.sort(function(a, b) {
        return b - a;
    });
    var biggest = numbers[0];
    var bigger = numbers[1];
    var answer = biggest * bigger;
    return answer
}

 

728x90