프로그래머스, 자바스크립트) 최솟값 만들기

2024. 11. 15. 23:57·개발/알고리즘(코딩테스트)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12941

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

일차적인 풀이는 우선 최소의 합을 만들기 위해 큰 수, 작은 수로 정렬하여 곱해준걸 합산한다.

function solution(A,B){
    
    let answer = 0;
    //곱한게 최소가 되려면, 큰 수 * 작은 수
    const BigA = Math.max(...A)
    const BigB = Math.max(...B)
    
    if(BigA > BigB) {
        const sortA = A.sort((a,b) => b-a)
        const sortB = B.sort((a,b) => a-b)
        
        sortA.forEach((x,i) =>{
          answer+=  x * sortB[i]
        })
        
    } else {
        const sortA = A.sort((a,b) => a-b)
        const sortB = B.sort((a,b) => b-a)
        
        sortA.forEach((x,i) =>{
          answer+=  x * sortB[i]
        })
    }
    
    return answer;
}

A의 최댓값이 크나 B의 최댓값이 크나 상관없이 하나는 오름차순, 다른 하나는 내림차순으로 해주면 되기에

조건문을 제거하고 정렬 후 반복문만 남겼다.

function solution(A, B) {
    let answer = 0;

    // A는 오름차순, B는 내림차순으로 정렬
    A.sort((a, b) => a - b);
    B.sort((a, b) => b - a);

    // 정렬 후, 각 요소의 곱을 누적
    for (let i = 0; i < A.length; i++) {
        answer += A[i] * B[i];
    }

    return answer;
}

반복문도 결국 합산을 위해 사용하는 것이니 reduce로 누적하는걸로 수정

function solution(A, B) {
    const sortA = A.sort((a,b) => a-b);
    const sortB = B.sort((a,b) => b-a);
    
    return sortA.reduce((sum, curr, i) => sum + curr * sortB[i], 0);
}

'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글

프로그래머스, 자바스크립트) 올바른 괄호  (0) 2024.11.18
프로그래머스, 자바스크립트) JadenCase 문자열 만들기  (0) 2024.11.17
프로그래머스, 자바스크립트) 최댓값과 최솟값  (1) 2024.11.14
프로그래머스, 자바스크립트) 숫자의 표현  (3) 2024.11.13
프로그래머스, 자바스크립트) 삼총사  (0) 2024.11.12
'개발/알고리즘(코딩테스트)' 카테고리의 다른 글
  • 프로그래머스, 자바스크립트) 올바른 괄호
  • 프로그래머스, 자바스크립트) JadenCase 문자열 만들기
  • 프로그래머스, 자바스크립트) 최댓값과 최솟값
  • 프로그래머스, 자바스크립트) 숫자의 표현
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (153) N
      • 기술 (42)
        • JavaScript (6)
        • TypeScript (9)
        • React.js (10)
        • Next.js (0)
        • 라이브러리,도구 (4)
        • HTML,CSS (4)
        • CS (5)
        • BE (4)
      • 개발 (99) N
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (94) N
      • 정보 (4)
      • 취미 (8)
        • 감상 (8)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
프로그래머스, 자바스크립트) 최솟값 만들기
상단으로

티스토리툴바