[Python] 백준 22945 - 팀 빌딩 문제 풀이

Boo Sung Jun·2022년 3월 10일
0

알고리즘, SQL

목록 보기
34/70
post-thumbnail

Overview

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 감소시킨다.

0개의 댓글