본문 바로가기

알고리즘(백준 등) 공부

SWEA 24396. 공과 상자

검은 공과 흰 공이 색에 맞는 상자가 각각의 공의 갯수 만큼 있을 때, 검은 공을 검은 상자에 넣을 때의 점수, 흰공을 흰 상자에 넣을 때의 점수, 다른 색상의 상자에 담았을 때의 점수가 주어질 때 최고점을 구하는 문제이다.

 

다른 색상의 상자에 담았을 때의 점수가 다른 점수보다 낮으면 기본 점수인 같은 색의 상자에 공을 넣는 경우가 가장 크고 반대라면 최대한 많이 다른 상자에 넣는 경우 최대한 많은 공을 색이 다른 상자에 넣었을 때 점수가 가장 크며, 이를 비교해서 큰 값이 최고점이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        while(T-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int b = Integer.parseInt(st.nextToken()), w = Integer.parseInt(st.nextToken());
            int x = Integer.parseInt(st.nextToken()), y = Integer.parseInt(st.nextToken()), z = Integer.parseInt(st.nextToken());
            int sum = b*x + w*y;
            int minAmount = Math.min(b,  w);
            sum = Math.max(sum, z*2*minAmount + x*(b-minAmount) + y * (w-minAmount));
            sb.append(sum).append('\n');
        }
        br.close();
        System.out.print(sb);
    }
}

'알고리즘(백준 등) 공부' 카테고리의 다른 글

SWEA 23005. 회문 만들기  (0) 2026.04.17
백준 1384번: 메시지  (0) 2026.04.16
SWEA 24524. 레벨업  (0) 2026.04.14
SWEA 24696. 직육면체 자르기  (0) 2026.04.13
SWEA 25330. 거리 문자열  (0) 2026.04.12