-
[Python] 백준 1026 보물Algorithm 2023. 5. 14. 03:48
최종 제출 코드.py
import sys s = open("input.txt", "rt") N = int(s.readline()) A_list = list(map(int, s.readline().split())) B_list = list(map(int, s.readline().split())) A_list.sort(reverse=True) # A_list 내림차순 B_list.sort() # B_list 오름차순 result = list(map(lambda x, y: x*y, A_list, B_list)) print(sum(result))
A_list와 B_list의 같은 인덱스 값을 가지는 값끼리 각각 곱하는 부분에서 시간이 걸림
방법 1) numpy 라이브러리 사용
import numpy as np A_list = list(map(int, s.readline().split())) B_list = list(map(int, s.readline().split())) result = np.multiply(A_list, B_list) print(sum(result))
*** 백준에서는 numpy라이브러리 사용 불가
방법 2) lambda식 사용
A_list = list(map(int, s.readline().split())) B_list = list(map(int, s.readline().split())) A_list.sort(reverse=True) # A_list 내림차순 B_list.sort() # B_list 오름차순 result = list(map(lambda x, y: x*y, A_list, B_list)) print(sum(result))
lambda식을 이용해
A_list의 정렬 후 값인 [6, 1, 1, 1, 0]과
B_list의 정렬 후 값인 [1, 2, 3, 7, 8]을 곱한다.
result = [6, 2, 3, 7, 0]이므로
sum(result)를 통해 최종 결과를 얻는다.
참고(람다식)
https://www.delftstack.com/ko/howto/python/multiply-two-lists-python/
'Algorithm' 카테고리의 다른 글
[Algorithm] 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬 (0) 2024.04.02 [JAVA] 백준 11721 열 개씩 끊어 출력하기 - charAt() (0) 2023.06.17 [Python] 백준 21921 블로그 - 누적합(prefix sum) / 슬라이딩 윈도우 (1) 2023.06.14 [Python] 백준 2012 등수 매기기 / 시간 단축, 절대값(abs) 함수 (1) 2023.05.17 [Python] 백준 1764 듣보잡 - 시간초과 해결 / set() 함수 (0) 2023.05.15