728x90
프로그래머스 2단계에서 정답률이 상당히 높은 문제였다.
문제를 잘 읽어보면 쉽게 말해서 길이가 같은 배열이 2개가 온다고 했을때, 각각 한번씩 곱해서 그합이 최솟값이 나오게 하라는것 이었는데 규칙? 이 있다.
A배열에서 가장 작은수와 B배열에서 가장 큰수를 곱하고 A배열에서 가장 큰수와 B배열에서 가장 작은수를 곱해서 더하면 되는것.
즉 A배열은 오름차순으로 정렬을하고 B배열은 내림차순으로 정렬해서 각 index에 맞게 곱하여 합을 구하면 되는것.
function solution(A,B){
A.sort((a, b) => a - b);
B.sort((a, b) => b - a);
return A.reduce((answer, value, index) => answer + value * B[index], 0);
}
처음에 풀때는 reduce로 하면 되겠다 생각만하고 귀찮아서 forEach로 풀었었는데 정답확인하고 바로 reduce로 다시풀었다.
근데 다른사람 풀이에 똑같이 푼사람이 있던데,, 2단계치고 정답률이 높을만 하다.
728x90
'알고리즘 > Programmers' 카테고리의 다른 글
[JavaScript]신고 결과 받기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1) (0) | 2022.10.21 |
---|---|
[JavaScript]성격 유형 검사하기_자바스크립트(JS) / 프로그래머스(Programmers) 연습문제(level 1) (1) | 2022.10.01 |
[Programmers]약수의 개수와 덧셈_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.23 |
[Programmers]서울에서 김서방 찾기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.20 |
[Programmers]두 개 뽑아서 더하기_자바 / 프로그래머스 연습문제(level 1) (0) | 2021.08.19 |