본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 4][Python] 1026번 : 보물

by 빛밤하늘 2021. 5. 9.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 문제의 함수 S를 구현합니다.
# 리스트 A, B와 A, B의 똑같은 길이인 N을 매개변수로 받습니다.
def S(A, B, N):
    # S의 결과인 합을 저장할 변수를 선언합니다.
    sum_result = 0

    # 리스트 A, B의 길이인 N만큼 반복합니다.
    for index in range(N):
        # sum_result에 A와 B의 현재 인덱스의 숫자를 곱한 것을 더합니다.
        sum_result += A[index] * B[index]

    # sum_result의 값을 반환합니다.
    return sum_result

# 첫째 줄에 N을 입력합니다.
# 50보다 작거나 같은 자연수입니다.
N = int(input())

# 둘째 줄에 N개의 수를 공백으로 구분해 입력합니다.
# 각 숫자는 정수형으로 변환하고 리스트 변수 A에 넣어줍니다.
A = list(map(int, input().split(' ')))
# 셋째 줄에 N개의 수를 공백으로 구분해 입력합니다.
# 각 숫자는 정수형으로 변환하고 리스트 변수 B에 넣어줍니다.
B = list(map(int, input().split(' ')))

# S의 최솟값을 구하기 위해서는 A의 숫자 중 작은 순서대로, B의 숫자 중 큰 순서대로 곱한 것을 더하면 됩니다.
# 혹은 A의 숫자 중 큰 순서대로, B의 숫자 중 작은 순서대로 곱한 것을 더하면 됩니다.

# A는 오름차순으로 정렬해줍니다.
A = sorted(A)
# B는 내림차순으로 정렬해줍니다.
B = sorted(B, reverse=True)

# 리스트 변수 A, B, 첫 번째로 입력한 N의 값을 함수 S에 넣어주고
# 반환된 값을 출력합니다.
print(S(A, B, N))

결과

 

제출하고 나서 다른 사람들의 파이썬 결과를 보니 저보다 적은 실행 시간이 걸린 사람들이 대부분이었습니다.

코드를 대충 훑어보니 저와는 다른 방법으로 해결했던 것 같던데

실행 시간이 더 짧게 걸리는 방법으로 구현해봐야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글