-
[코딩 테스트] 누적합 - 프로그래머스 최솟값 만들기알고리즘/코딩 테스트 2023. 1. 27. 15:03
최솟값 만들기
문제 설명길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.
배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)더보기잘못된 풀이
1. A는 오름차순, B는 내림차순 정렬하여 하나씩 곱함
틀린 이유!!
arr.sort는 arr.sort((a,b) => a-b) 이렇개 해야함!!function solution(A,B){ //1. A는 오름차순, B는 내림차순 정렬하여 하나씩 곱함 let psum = [0]; A.sort; B.sort().reverse(); for (let i=0;i <A.length;i++) { psum[i+1] = psum[i] + B[i]*A[i]; } return psum.at(-1); }
function solution(A,B){ //2. sort 메서드 이용 let answer = 0; A.sort((a,b) => a-b);; B.sort((a,b) => b-a); A.forEach((_,i )=> answer += A[i]*B[i]) return answer }
또는 reduce 메서드를 이용하여 변수 선언없이 문제를 풀 수 있다.
function solution(A,B){ A.sort((a,b) => a-b); B.sort((a,b) => b-a); return A.reduce((pre,cur,i)=>{return pre + cur*B[i]},0) }
'알고리즘 > 코딩 테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 1단계 - 문자열 내 p와 y의 개수,핸드폰 번호 가리기 , 제일 작은 수 제거하기,없는 숫자 더하기 (0) 2023.01.28 [코딩테스트 javascript] 타겟넘버 - DFS , 그래프 탐색 알고리즘 (0) 2023.01.27 [코딩 테스트] 누적합 - 백준 11659 구간 합 구하기 4, 2559 수열, 10986 나머지합 (0) 2023.01.27 [코딩테스트 javascript] 안전지대 - DFS , BFS, 그래프 탐색 알고리즘 (0) 2023.01.26 [코딩 테스트] 프로그래머스 JS 연습 - 연속된 수의 합, 평행, 최빈값 구하기,겹치는 선분의 길이,옹알이 (0) 2023.01.24