코딩테스트/SWEA
[SWEA] 1859 : 백만 장자 프로젝트
Ari_S2
2023. 10. 11. 23:34
문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
코드
t = int(input())
for i in range(t):
_ = input()
n = list(map(int, input().split()))
ans = 0
while len(n) != 0: # 리스트 요소가 0일때까지 반복
m = max(n)
mi = n.index(m)
ans += m * len(n[:mi]) - sum(n[:mi])
# max값 * max까지의 도달하기 위한 일수 - max까지의 값의 합
n = n[mi+1:] # 다음 max값을 찾기 위해 max값 이후로 슬라이싱
print(f"#{i+1} {ans}")
- print(f ) => " " 내에 {변수} 사용 가능
다른 사람의 풀이
N = int(input())
for i in range(N):
M = int(input())
answer = 0
arr = list(map(int, input().split()))
sellPrice = 0 #현재 판매가격(최댓값)
for val in arr[::-1]: # 배열 거꾸로 순회
if val >= sellPrice: #현재 값이 최댓값보다 크거나 같다면
sellPrice = val #최댓값 업데이트
else:
answer += sellPrice - val #최댓값이 변하지 않을 때까지 매일의 현재가에 판매 후 값 더함
print("#", i + 1, " ", answer, sep="")
참고한 블로그
[SWEA] 백만 장자 프로젝트(1859) - PYTHON
1차원 배열을 입력받아 원소 순서별로 사거나 팔 수 있다고 가정할 때, 최대 이익을 구하는 문제이다. 시간복잡도: O(N) SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠
herbi1411.tistory.com