코딩테스트/PYTHON

[프로그래머스][PYTHON] Lv. 0 최댓값 만들기 (2)

_알파카 2024. 3. 13. 23:28
728x90

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/120862#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

내 풀이

def solution(numbers):
    # 제공된 배열을 정렬한다. 
    numbers.sort()
    # 가장 작은 수 2개를 곱한 값과 가장 큰 수를 곱한 값 중 더 큰 값을 return 한다. 
    return max(numbers[0]*numbers[1], numbers[-1]*numbers[-2])

 

처음에는 제공된 배열을 음수와 양수로 나누어 여러가지 케이스들을 제한하여 문제를 풀었는데,, 그렇게하니 고려해야할 케이스들도 너무 많았고, 테스트 케이스는 다 맞더라도 실제 채점에서 계속 1개씩 오류가 발생하였다. (하나를 해결하면 다른 하나가 문제..)

 

그래서 다른 사람의 풀이를 살짝 참고하여 문제를 풀어보았다. 

먼저, 제공된 배열은 순서대로 정렬하고, 가장 작은 수 2개를 곱한 값과 가장 큰 수를 곱한 값 중 더 큰 값을 answer로 반환한다. 

왜냐면, 가장 작은 수 2개를 곱했을 때, 음수가 2개 이상이라면 곱했을 때 양수가 되어 그 값이 최댓값이 될 가능성이 있고

가장 큰 값 2개를 곱하면 이 역시 최댓값이 될 가능성이 있기 떄문이다. 

 

느낀점

생각보다 너무 쉽게 풀 수 있는 문제였다👿 이런 간단한 것도 생각하지 못한 나에게 화가 나지만...

화이팅-! 

봄이 온 탓인지 공부하기 너무 싫다

놀고싶다

728x90