코딩테스트/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="")

참고한 블로그

https://herbi1411.tistory.com/entry/SWEA-%EB%B0%B1%EB%A7%8C-%EC%9E%A5%EC%9E%90-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B81859-PYTHON

 

[SWEA] 백만 장자 프로젝트(1859) - PYTHON

1차원 배열을 입력받아 원소 순서별로 사거나 팔 수 있다고 가정할 때, 최대 이익을 구하는 문제이다. 시간복잡도: O(N) SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠

herbi1411.tistory.com