Toy Problem #8.

ytwicey·2020년 11월 11일
0

Toy Problems

목록 보기
4/7
post-thumbnail

largestProductOfThree

정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다.

주의사항

  • 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다.
  • 배열의 요소는 음수와 0을 포함하는 정수입니다.
  • 배열의 길이는 3 이상입니다.

고민 하루 종일 했다. 진짜

[-5, -4, -3, -2, -1,] 이면?
[-11,-15, 2, 3, 8, 4, 7, 99] 이면?
[16,3,88,59,-1] 이면?

별의별 경우의 수가 다 떠오르길래 어떻게 해야하나 고민 진짜 많이 했는데

우선 3가지 경우로 나눔
0. sort()
1. 전체 길이가 3일때,
2. 3보다 클때
2-1. 안의 엘리먼트가 0보다 작은 것만 고르기(filter)
2-2. 0보다 작은 엘리먼트의 배열의 길이가 2이면 가장 작은 수 2개 픽
2-3. 2-2 * 전체 배열에서 가장 큰 양수

하지만!!! => 이때 여기서 테스트케이스마다 에러가 생길 수 있음. 양수에서 가장 큰 수가 3개가 있을 수 있으니까.
3. 3보다 클 때, 모든 요소가 양수이면, 그러니까 2-1의 배열의 길이가 0이면, 그냥 가장 큰 양수 3개 곱하기.

이렇게 경우의 수를 나눔.

그런데 이렇게 해서 어쨋든 통과는 됐는데, 테스트케이스가 좀더 교묘해지면 아마 통과 못할 듯. 그래서 이건 좀 불완전한 풀이.

profile
always 2B#

0개의 댓글