SWEA 1859. 백만 장자 프로젝트(파이썬)

비만다람쥐·2024년 4월 23일
0
post-custom-banner

문제

문제바로가기

1.원재는 미래를 보는 능력을 가지고 있는데 이 능력으로 사제기를 하려고한다
2.원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고있다.
3.당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구매할 수 있다.
4.판매는 얼마든지 할 수 있다.

예를 들어 3일 동안의 매매가가 1,2,3 이라면 처음 두 날에 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다.

접근하기

1.처음에는 리스트에 숫자를 넣어 앞의 숫자보다 뒤의 숫자가 크면 그 숫자를 buy에 더해서 나중에 큰 숫자가 나오면 빼려고 하였으나 뒤의 리스트가 없는 문제가 발생하였다
2.그래서 뒤에서 부터 접근하기로 했다
3.뒤에서 부터 접근함과 동시에 sellprice = 0 을 설정해서 sellprice가 숫자보다 크거나 같으면 최고 점수를 갱신하면서 빼기로 하였다

풀이

T = int(input())

for t in range(1,T+1):
    N = int(input())
    answer = 0
    sellprice = 0
    arr = list(map(int,input().split()))
    
    for a in arr[::-1]:
    #뒤에서 부터 접근한다
        if a >= sellprice:
        # a가 sellprice 보다 크면 sellprice에 a를 대입한다
            sellprice = a
        else:		# a가 sellprice 보다 작은경우에는 
            answer += sellprice - a # answer에 sellprice에 a를 뺀 차익을 더한다
    print(f'#{t} {answer}')
profile
개발자가 되고싶은 사람
post-custom-banner

0개의 댓글