원재의 사재기... 문제는 줄여서 쓰도록 하겠습니다.
1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다.
2. 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다.
3. 판매는 얼마든지 할 수 있다.
입력3
3
10 7 6 # 가격이 점점 낮아져서 사지 않는 케이스
3
3 5 9 # 3, 5를 사고 9원일때 팔아서 총 9-3=6, 9-5=4 ,10의 이득을 챙김
5
1 1 3 1 2 # 1,1 을 3에 팔고 1을 2에 판다. 총 5의 이득
출력
#1 0
#2 10
#3 5
문제이해하는 단계부터 힘든건 뭐지.. 아무튼 위와같은 방식으로 코딩을 하고
- 시간 : 10개 테스트케이스를 합쳐서 C++의 경우 30초 / Java의 경우 30초 / Python의 경우 30초
- 메모리 : 힙, 정적 메모리 합쳐서 256MB 이내, 스택 메모리 1MB 이내
위의 조건을 통과 해야함..
T=int(input())
A=[]
for i in range(0,T):
a = int(input())
b = input().split()
A.append(b) #[[1번째 테스트 날짜별 금액],[두번째 테스트날짜별 금액]]
for l,i in enumerate(A):#
cnt=0
for j in range(len(i)):
if int(i[j]) < int(max(i[j:])): # 순차적으로 뒤에 있는 숫자중 제일 큰 값과 비교
profit = int(max(i[j:]))-int(i[j])
cnt += profit
print(f"#{l+1} {cnt}")
위와 같이 코딩을 해서 직접 테스트 해보면 잘 되는데..
문제 제출을 하니 런타임 에러가 나오네요..ㅠ 아직 갈길이 멀었네
그래서 참지 못하고 정답자들의 코드를 보았다..
T=int(input())
for i in range(0,T):
a = int(input())
b = list(map(int,input().split()))
money=0
A = b[len(b)-1]
for j in range(1,len(b)+1):
if b[-j] < A:
money = money + A-b[-j]
else:
A = b[-j]
print(f'#{i+1} {money}')
라고 하네요..
메모리 영역 공부좀 더 해야겠다...
'개발공부 > Problem' 카테고리의 다른 글
프로그래머스 :: 가장 큰 수 (0) | 2022.02.10 |
---|