본문 바로가기

Python/백준

#17 [python/백준] 11501번: 주식

728x90

https://www.acmicpc.net/problem/11501

 

11501번: 주식

입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타

www.acmicpc.net

 

✔ 문제 

입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타내는 N개의 자연수들이 공백으로 구분되어 순서대로 주어진다. 날 별 주가는 10,000이하다.

 

⭐ 코드 분석

처음에는 자연수 T입력 받고

날의 수 입력 받기 N

 

주가가 오를 때 주식을 사고 주가가 내릴때 주식을 파는것 

 

 

🌹 코드

T = int(input())
for _ in range(T):
    N = int(input())
    stock = list(map(int, input().split()))
    stock.reverse()
    max = stock[0]
    sum = 0

    for i in range(1, N):
        if max < stock[i]:
            max = stock[i]
            continue
        sum += max - stock[i]

    print(sum)

 

 

1. T = int(input())

T 입력 값 받기 - 반복할 숫자

 

2. for _ in range(T):

N  = int(input()) // 날의 수를 언제로 정할 건지 N  값 입력 받기

stock = list(map(int,input().split())) // 각 날짜의 주식을 split()으로 끊어서 보기

stock.reverse() // 끝 값에 큰게 있으면 안되므로 reverse()를 걸어서 끝값부터 보기

 

3. for i in range(1,N):

if max < stock[i]:

max = stock[i] 가장 큰값 찾기

continue

 

sum += max - stock[i] 큰값에서 차이를 빼서 더한값이 이득

 

print(sum)