프로그래머스_Lv0_최대값 만들기(2)_파이썬

Today Jeeho Learned·2022년 12월 15일
0

알고리즘

목록 보기
25/38
post-thumbnail

문제 출처

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

내 답안

def solution(numbers):
    
    numbers.sort()
    
    answer1 = numbers[0] * numbers[1]
    answer2 = numbers[len(numbers)-1] * numbers[len(numbers)-2]

    if answer1 > answer2:
        return answer1
    else:
        return answer2

풀이 정리

  • 처음에 접근할때는 각 모든 요소를 곱해주고, 새로운 배열을 만든 후 거기서 최대값을 구해주는 것으로 생각을 했었다. 그런데 이방법을 사용하게되면 시간복잡도도 늘어나게 된다. 또한 실제로 구현하지도 못했다ㅋ큐ㅠㅠ 아무튼 그래서 고민하다 결국 다른답안을 찾아보게되었다.
  • 음수를 포함하기 때문에 오름차순으로 정렬한 배열에서 맨앞의 두자리와, 맨위에서 두자리를 곱한 값중에서 큰 값을 최대값으로 생각하면 문제가 없다.

다른풀이

def solution(numbers):
    numbers = sorted(numbers)
    return max(numbers[0] * numbers[1], numbers[-1]*numbers[-2]) 

나는 len(numbers)-1 * len(numbers)-2 의 인덱스 요소로 곱을 해주었는데 여기서는 -1 -2의 값으로 진행한 것을 보았다.

항상 배열에 관련해서는 정렬부분을 생각해주고, 인덱스 활용하는 방법을 의식하며 고려해야 겠다.

profile
기록해야 (살아)남는다 !

0개의 댓글