[백준] 1026번 : 보물 (파이썬)

뚝딱이 공학도·2022년 2월 3일
0

문제풀이_백준

목록 보기
46/160




문제





나의 답안

#가장 큰 값은 가장 작은 값과 곱해줘야함
def math_list(n,al,bl):
    s=0
    for i in range(n):
        s+=min(al)*max(bl)
        
        mx=bl.index(max(bl))
        mn=al.index(min(al))

        al.pop(mn)
        bl.pop(mx)
    return s

n=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
print(math_list(n,a,b))

힌트에 정렬이 제시되어 있으나, 정렬하지 않고 접근하였다. 그리디 알고리즘 문제
1. a배열에서 가장 작은 값과, b배열에서의 가장 큰 값을 곱해주면 s의 값을 작게 만들 수 있다. s+=min(al)*max(bl)
2. 따라서 mn에는 a 배열에서 가장 작은 값을 갖는 것의 인덱스를 저장, mx는 b배열에서 가장 큰 값을 갖는 것의 인덱스를 저장해주었다.
3. 2.의 값에 따라 pop을 사용해 각 배열에서 해당 값을 제거해주어, 그 다음으로 작은 값과 큰 값을 반복해서 계산하도록 하였다. 배열의 길이만큼 반복하고, 반복문이 종료되면 s를 반환한다.
4. 함수를 호출하여 s값을 출력해준다.

0개의 댓글