Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

전공공부

[BOJ_22945] 팀 빌딩 본문

Study/Problem Solving

[BOJ_22945] 팀 빌딩

monitor 2024. 1. 5. 20:05

설명


시작 지점과 끝지점을 옮겨 가면서 값을 구하려고 했다. 부분합 문제처럼 생각하는 투 포인터는 아니고 두 수 간의 min 값을 개발자 능력치로 빼고 그 사이의 인원수를 곱하는 식으로 식을 짜서 최댓 값을 출력해야 하는 문제다. 그러면 생각해봤을때 서로 간의 최솟값을 기준으로 개발자 능력치를 뽑기 때문에 기준점이 되는 더 작은 수의 값을 가지는 쪽을 계속 움직여서 더 큰 수의 값을 찾게하고 이때의 서로 사이에 존재하는 개발자의 수를 가지고 계산하면 된다.

 

코드


package two_pointer;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class BOJ_22945 {
    static List<Integer> list;
    public static void main(String[] args) throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(in.readLine());

        String str [] = in.readLine().split(" ");

        list = new ArrayList<>();

        for (int i = 0; i < str.length; i++){
            list.add(Integer.parseInt(str[i]));
        }
        find();
    }

    private static void find() {
        int S = 0;
        int E = list.size() - 1;
        int ans = 0;
        while (E > S){
            int min = Math.min(list.get(S),list.get(E));
            int diff = E - S - 1;
            ans = Math.max(diff * min, ans);
            if(list.get(S) > list.get(E)){
                E--;
            }else{
                S++;
            }
        }
        System.out.println(ans);
    }
}

 

 

22945번: 팀 빌딩

개발자 $N$명이 팀 빌딩을 위해 한 줄로 서있다. 하나의 팀을 만들기 위해서는 개발자 2명이 반드시 모여야 한다. 개발자 A와 개발자 B가 팀을 만들 때 팀의 능력치는 아래와 같이 계산이 된다. (개

www.acmicpc.net

 

'Study > Problem Solving' 카테고리의 다른 글

[BOJ_1325] 효율적인 해킹  (2) 2024.01.05
[BOJ_16918] 봄버맨  (2) 2024.01.05
[BOJ_14940] 쉬운 최단거리  (2) 2024.01.05
[BOJ_20364] 부동산 다툼  (0) 2023.12.31
[BOJ_4256] 트리  (1) 2023.12.28