용꿀
꼬마개발자허니
용꿀
전체 방문자
오늘
어제
  • 분류 전체보기 (248)
    • 개발 (75)
      • 스프링 입문 (7)
      • 스프링 기본 (9)
      • ToDo List using JPA (2)
      • 스프링 개념 (9)
      • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 (8)
      • 스프링 MVC (3)
      • CS (19)
      • 개발 팁 (8)
      • 스프링 MSA (5)
      • 곰터뷰🐻 (5)
    • 알고리즘 (169)
      • 알고리즘 문제 풀이 (165)
    • 잡동사니 (1)
      • 노래 가사 (1)
hELLO · Designed By 정상우.
용꿀

꼬마개발자허니

(C++) 백준 1026번 - 보물
알고리즘/알고리즘 문제 풀이

(C++) 백준 1026번 - 보물

2023. 5. 14. 03:53

문제 링크 : https://www.acmicpc.net/problem/1026

 

1026번: 보물

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

www.acmicpc.net

문제 풀이

그리디 알고리즘을 활용한 문제이다.

여러 수들의 곱의 최솟값을 구하고 싶다면 최댓값에 최솟값을 곱해주면 되고, 곱의 최댓값을 구하고 싶다면 최댓값끼리 곱해주면 된다. 

그렇기에 우선 오름차순으로 정렬을 진행하고, 한 배열에선 값이 작은 앞의 원소를, 다른 배열에서는 값이 큰 뒤의 원소를 차례대로 곱하면 최솟값을 구할 수 있다.  

#include <iostream>
#include <algorithm>

using namespace std;

int A[55], B[55];
int n, mn;

int main() {
    ios::sync_with_stdio(0);  
    cin.tie(0);
    cout.tie(0);
    
    cin >> n;

    for(int i = 0; i < n; i++) cin >> A[i];
    for(int i = 0; i < n; i++) cin >> B[i];

    sort(A, A+n);
    sort(B, B+n);
    for(int i = 0; i < n; i++) mn += A[i] * B[n-i-1];
   
    cout << mn;
}

'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글

(C++) 백준 1929번 - 소수 구하기  (0) 2023.05.15
(C++) 백준 1978번 - 소수 찾기  (0) 2023.05.14
(C++) 백준 2217번 - 로프  (0) 2023.05.14
(C++) 백준 1931번 - 회의실 배정  (0) 2023.05.14
(C++) 백준 11047번 - 동전 0  (0) 2023.05.13
    '알고리즘/알고리즘 문제 풀이' 카테고리의 다른 글
    • (C++) 백준 1929번 - 소수 구하기
    • (C++) 백준 1978번 - 소수 찾기
    • (C++) 백준 2217번 - 로프
    • (C++) 백준 1931번 - 회의실 배정
    용꿀
    용꿀

    티스토리툴바