본문 바로가기

Python/백준

#13 [python] 1026번: 보물

728x90

https://www.acmicpc.net/problem/1026

 

1026번: 보물

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

www.acmicpc.net

✔️문제 분석

길이가 N인 정수배열 A,B가 주어질 때, 

S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S 값이 최솟값이 되도록 출력

 

코드 분석

A는 오름차순, B는 내림차순으로 정렬 후 곱셈-> B는 재배열 불가능 하므로 이 방법으로 안됨

 

a는 sort 정렬을 해주어 순서대로 곱셈 b는 pop을 이용해 최댓값부터 뽑아서 서로 곱함 

 

💫 코드

import sys

input = sys.stdin.readline

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

answer = 0
a.sort()
for i in range(n):
    x = a[i]
    y = b.pop(b.index(max(b)))

    answer += x * y
    
print(answer)

 

 

🔴

  • input 값 입력 함수 비교
n = int(input())

vs

import sys
a = int(sys.stdin.readline())

맨 첫줄 test case를 입력 받을때는 input()을 사용해도 무방하나

반복문으로 여러줄 입력받는 상황에선 sys.stdin.readline() 을 사용해야 시간초과가 발생하지 않는다.

 

 

  • 문자열.split() 함수
= "a b c d e f g"
print(f's         : {s}')
 
= s.split()
print(f's.split() : {r}')
 

[ 결과값 ]

s	   	: a b c d e f g
s.split() : ['a', 'b', 'c', 'd', 'e', 'f', 'g']

문자열을 일정한 규칙대로 잘라서 리스트로 만들어주는 함수

'Python > 백준' 카테고리의 다른 글

#15 [python] 2457번: 공주님의 정원  (0) 2023.10.22
#14 [python] 11399번: ATM  (0) 2023.10.21
#12 [python] 2217번: 로프  (0) 2023.10.19
#11 [python] 1931번: 회의실 배정  (0) 2023.10.19
#10 [python] 11047번 동전 0  (0) 2023.10.18