알고리즘

<Programmers> 최솟값 만들기

koyuchang 2020. 4. 29. 17:19

처음엔 DP(동적 계획법)을 이용하여 푸는 것인 줄 알고 고생을 많이 했다. 결국 도저히 모르겠어서 구글을 통해 알게 되었는데 "최솟값을 구하기 위한 규칙은 각 배열에서 가장 작은 값과 가장 큰 값을 곱하는 것이다."

그러기 위해 A배열은 오름차순, B배열은 내림차순으로 설정하여야 한다.

 

A는 Arrays.sort()로 쉽게 할 수 있었지만, B를 역순으로 하는데 어려움이 있었다. aslist로 list로 넣은 뒤에 Collections.reverseorder로 역순으로 표현하려고 했지만, List <Integer> list = Arrays.aslist(B)에 빨간 줄이 생기며 불가능하다는 것을 알게 되었다. 다시 한번 블로그를 참고하니 Primitive 타입에는 적용되지 않고 Non-primitive 타입에만 허용되는 변환이었다.(int, long 등 은 불가).

 

해결방법!

배열 B를 list에 넣은 다음 아래 그림의 식으로 내림차순 정렬하여 해결!

 

 

 

[내 코드]

 

물론 더 간단한 방법도 있다.

 

[참고한 풀이]