BOJ 22945번 팀 빌딩 Python 문제 풀이
분류: Two Pointers (투 포인터)
https://www.acmicpc.net/problem/22945
from sys import stdin
def main():
n = int(stdin.readline())
stats = list(map(int, stdin.readline().split()))
res = 0
start, end = 0, n - 1
while start < end:
res = max((end - start - 1) * min(stats[start], stats[end]), res)
if stats[start] < stats[end]:
start += 1
else:
end -= 1
print(res)
if __name__ == "__main__":
main()
투 포인터를 이용하여 능력치를 계산하면서 최대값을 구한다.
포인터는 능력치가 작은 값을 기준으로 이동시킨다. stats[start]
가 stats[end]
보다 작다면 start
포인터를 1 증가시키고, 크다면 end
포인터를 1 감소시킨다.