JB의 이모저모
[BOJ 22945🥇4] 팀 빌딩 (Python) 본문
https://www.acmicpc.net/problem/22945
문제
개발자 명이 팀 빌딩을 위해 한 줄로 서있다.
하나의 팀을 만들기 위해서는 개발자 2명이 반드시 모여야 한다.
개발자 A와 개발자 B가 팀을 만들 때 팀의 능력치는 아래와 같이 계산이 된다.
- (개발자 A와 개발자 B 사이에 존재하는 다른 개발자 수) × min(개발자 A의 능력치, 개발자 B의 능력치)
예를 들어, 4명의 개발자가 존재할 때, 각 개발자의 능력치를 1 4 2 5라고 하자. 이때 능력치가 1인 개발자와 능력치가 5인 개발자가 한 팀을 이뤘다고 가정하자. 그러면 이 팀의 능력치는 가 된다.
팀 빌딩에서 나올 수 있는 팀 중 능력치의 최대값을 구해보자.
입력
첫 번째 줄에 개발자의 수 이 주어진다.
두 번째 줄에는 의 개발자의 각 능력치 x_i가 공백으로 구분되어 주어진다.
출력
팀의 능력치 최댓값을 출력한다.
제한
- 는 정수
예제 입력 1
4
1 4 2 5
예제 출력 1
4
⭕ CODE
n = int(input())
arr = list(map(int,input().split()))
s = 0
e = n-1
result = 0
while s < e:
result = max(result,(e-s-1)*min(arr[s],arr[e]))
# s를 1더하든 e를 1 빼든 사이에 존재하는 개발자 수는 똑같다
# 그렇다면 min값을 늘려야하기 때문에 작은애를 당겨준다.
if arr[s] < arr[e]:
s += 1
else:
e -= 1
print(result)
✏️ Comment
투포인터를 사용하여서 해결
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ 21940🥇4] 가운데에서 만나기 (Python) (0) | 2023.10.30 |
---|---|
[BOJ 18353🥈2] 병사 배치하기 (Python) (1) | 2023.10.30 |
[BOJ 1965🥈2] 상자넣기(Python) (1) | 2023.10.28 |
[BOJ 23289 Platinum 5] 온풍기 안녕!(Python) (1) | 2023.10.12 |
[BOJ 20061🥇2] 모노미노도미노 2 (Python) (2) | 2023.10.10 |