#4 배열요소로 큰 수 만들기
Q. nums 배열에서 (nums[i]-1*nums[j]-1)식으로 만들 수 있는 가장 큰 수를 만들어주세요!
정답 코드
import heapq
import sys
class Solution:
def maxProduct(self, nums):
a,b = heapq.nlargest(2, nums)[0] -1 , heapq.nlargest(2, nums)[1] -1
return a*b
nums = sys.input().readline
sol = Solution()
result = sol.maxProduct(nums)
print(result)
풀이 과정!
이전 포스팅에서 배웠던 heapq.nlargest()함수를 통해 문제를 해결해봤습니다.
처음보시는 분이나, 다시 정보를 찾아보고 싶으신 분들을 위해 아래 공식문서 설명을 달아두겠습니다!
heapq.nlargest() 입니다.
heapq.nlargest(n, iterable, key=None)
iterable에 의해 정의된 데이터 집합에서 n 개의 가장 큰 요소로 구성된 리스트를 반환합니다.
key가 제공되면 iterable의 각 요소에서 비교 키를 추출하는 데 사용되는 단일 인자 함수를 지정합니다
(예를 들어, key=str.lower). 다음과 동등합니다: sorted(iterable, key=key, reverse=True)[:n].
설명으로 들어가겠습니다.
우리가 maxProduct를 통해 반환할 값은 배열 중 2개를 뽑아서 각 요소를 -1를 시키고서 만들 수 있는 가장 큰 수 입니다.
heapq.largest(2, nums)[-1] 이 함수는 배열 nums를 받아 큰 수부터 정리합니다.
반환 배열은 2개의 인덱스를 갖습니다.
[0] (nums 배열 중 첫번째로 큰 수)를 a변수에 담고,
[1] (nums 배열 중 두번째로 큰 수)를 b변수에 담습니다.
a와 b에 -1을 하고 리턴값으로 두 변수를 곱하면 정답 완성입니다!
# return
a,b = heapq.nlargest(2, nums)[0] -1 , heapq.nlargest(2, nums)[1] -1
return a*b
'Python > codingTest' 카테고리의 다른 글
[백준 #7562] 나이트의 이동 (0) | 2024.01.17 |
---|---|
[leetCode #704] Binary Search (0) | 2024.01.13 |
[Python CT#5] 최대 힙 (1) | 2024.01.08 |
[Python CT#3] K번째 큰 요소 (0) | 2024.01.06 |
[Python CT#1] 그룹 애너그램 (0) | 2024.01.05 |