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

2022. 7. 25. 18:01·🎲 알고리즘 공부/백준

📝 문제 설명

>

길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.

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

 

S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.

S의 최솟값을 출력하는 프로그램을 작성하시오.

 

 

입출력 예시


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

 

1026번: 보물

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

www.acmicpc.net


🎨 풀이

💡 전체 코드

import sys

n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))

result = 0

A.sort()

for i in range(n):
    result += A[i] * max(B)
    B.remove(max(B))
    
print(result)

> 핵심 : 최솟값을 구하려면 작은 값 * 큰 값 이런식으로 곱해주면 됨. 예를 들면, A=[1,7] , B=[7,4] 라면 1 * 7 + 7 * 4 = 35 가 최솟값임. 만약 7 * 7 을 하게 두면 수가 엄청 커져버림. A는 정렬해두고, B에서 필요한 거 뽑아서 곱해주면 됨. (B는 정렬 불가라고 적혀있어서!)

 

 

🍦 코드 설명 (실행 순서대로 나열)

# main

n = int(input())
A = list(map(int, sys.stdin.readline().split()))
B = list(map(int, sys.stdin.readline().split()))

1. n을 입력받는다.

 - n : 한 리스트에 들어있는 숫자 수

2. A, B를 입력받는다.

 - A,B : n개의 수가 들어있는 리스트

 

result = 0

A.sort()

3. result 변수를 초기화한다.

 - result : S의 최솟값

4. A를 오름차순으로 정렬한다. 

 

@ 첫 번째 for문 (3번~5번)        => 동전 종류 입력받기

for i in range(n):
    result += A[i] * max(B)
    B.remove(max(B))

3. for문을 돌린다. (n만큼)

4. A[i] 와 B의 max값을 곱한 후, 그 값을 result에 더해준다.

 - A의 작은 값과 B의 큰 값을 곱해주는 것임.

5. B 리스트에서 max(B) 값을 삭제한다.

 

6. result를 출력한다.


​끝~

 

⭐ 느낀점

> 처음에는 이게 B를 정렬해도 되는 줄 알고 reversed=True를 써서 풀었는데, 이 글 적으려고 보니까 문제에 "B에 있는 수는 재정렬하면 안된다" 가 적혀있었다. ㅎㅎ.. 문제 꼼꼼히 읽기를 좀 해야할듯하다. 그리고 잘 풀었다고 생각한다. 잘했다~

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 10870번 - 피보나치 수 5 (파이썬)  (0) 2022.07.27
[백준] 10872번 - 팩토리얼 (파이썬)  (0) 2022.07.26
[백준] 11047번 - 동전 0 (파이썬)  (0) 2022.07.24
[백준] 1003번 - 피보나치 함수 (파이썬)  (0) 2022.07.23
[백준] 11399번 - ATM (파이썬)  (0) 2022.07.22
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 10870번 - 피보나치 수 5 (파이썬)
  • [백준] 10872번 - 팩토리얼 (파이썬)
  • [백준] 11047번 - 동전 0 (파이썬)
  • [백준] 1003번 - 피보나치 함수 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (267)
      • 📑 신입일기 (35)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 📘 독서 (0)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    백준
    정보처리기사
    til
    신입일기
    행렬덧셈
    코민이
    codeup
    연습문제
    폰켓몬
    카카오
    컨텐더스
    프로그래머스
    충무로
    정처기
    오버워치
    티스토리챌린지
    코린이
    코드업
    코테
    6월 목표
    스프링 부트
    피보나치수
    50문답
    찬양추천
    nodejs
    BOJ
    스프링부트
    파이썬
    일기
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 1026번 - 보물 (파이썬)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.