본문 바로가기
알고리즘

[SWEA] 백만 장자 프로젝트 - python

by 육빔 2024. 5. 13.
728x90
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE&problemTitle=%EB%B0%B1%EB%A7%8C&orderBy=SUBMIT_COUNT&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

처음에 푼 코드

시간초과가 발생해 다시 한 번 생각하며 생각했다. 

T = int(input())

for _ in range(T):
    n = int(input())
    arr = list(map(int, input().split()))

    profit = 0
    for i in range(n):
        tmp = 0
        maxtmp = 0
        for j in range(i+1,n):
            if arr[i] < arr[j]:
                tmp = arr[j]-arr[i]
                if maxtmp < tmp:
                    maxtmp = tmp
        profit += maxtmp
    print(f'#{_ + 1} {profit}')

 

 

처음엔 그리디로 해결하려다가 인덱스번호, 이것저것 저장해서 신경쓸게 많아서 단순하게 뒤에서부터 접근하니 문제가 쉽게 풀렸다.

 

T = int(input())

for _ in range(T):
    n = int(input())
    arr = list(map(int, input().split()))
    profit = 0
    tmp = arr[-1]
    for i in range(n-1, -1, -1):
        if tmp >= arr[i]:
            profit +=(tmp-arr[i])
        else:
            tmp = arr[i]

    print(f'#{_ + 1} {profit}')

 

완성

728x90
반응형

'알고리즘' 카테고리의 다른 글

[백준] 11720번: 숫자의 합 - java  (0) 2024.07.10
java 입, 출력받기  (0) 2024.06.30
[SWEA] 최대 상금 - python  (0) 2024.05.13
[SWEA] 한빈이와 Spot Mart - python  (0) 2024.05.13
[백준] 15988번: 1, 2, 3 더하기 3 - python  (0) 2024.05.07