프로그래머스 JS 최솟값 만들기

문제 설명

두 배열이 주어지고 두 배열의 인자 값들을 곱해서 누적값을 만들때
최솟값이 되도록 만들면 된다.
배열 순서대로 곱해서 누적값을 만드는 것이 아니고 랜덤으로 곱해서 누적값을 만들때 최솟값이 되면 된다.

문제 풀이

level2 문제여서 사실 문제가 이렇게 쉽게 풀려도 될까? 라는 생각도 했었다.
처음 문제를 접할때 재귀 함수를 써서 구해야 하나 , 스택과 큐를 써야 하나 고민을 했었다.
여지껏 이런 문제들을 접하고 로직을 길게 세우다 보니 두개의 지식을 알게 되어서 접목하려고 고민을 하게 된다.

단점이 이런 기교가 늘어날수록 단순하게 생각하는 게 맞을까? 의심을 하게 된다는 점이다..

일단 단순하게 맛만 보기 위해서 단순하게 접근하였다. 그냥 작은 수를 곱해주면 적은 수가 나오지 않을까 ? 라는 단순한 생각으로 문제를 풀었다.

대신 큰 수일때 작은 거를 찾아서 곱하고 누적해보자 라는 생각을 하고 아래와 같이 로직을 짰다

function solution(A,B) {
let sortedA = A.sort((a,b)=>b-a)
let sortedB = B.sort((a,b)=>a-b)

  let sum=0;
  sortedA.map((x,i)=>{
 
    sum+= x*sortedB[i]
  })
  return sum
}

A의 경우 큰수 우선으로 정렬하고 B의 경우는 작은 수 우선으로 정렬하였다.

그리고 곱해서 누적해준다.

이렇게 접근해보고 천천히 틀린 부분을 수정해보자 마음 먹었지만
왠걸? 테스트에 통과했다. 짧고 간단하게 나와서 당황하기도 했고 이게 정답이 맞는건가 의심도 했다. 그래서 다른사람의 풀이 를 눌렀을때 대부분도 이렇게 풀어서 안도하게 되었다.

이정도면 level1로 가도 무방한 난이도 인것 같다.

스택과 큐, DFS, 재귀함수 등등 많은것을 레벨2단계와서 배울수 있었는데
문제를 접하면 어떻게 문제를 해결할지 머리속으로 간단하게 계산을 하게되는데 머리가 아파진다.
좋아진건지 모르겠다.. 아무튼 오늘도 문제 해결이다.

좋은 웹페이지 즐겨찾기