2024. 4. 17. 21:17ㆍ코테 준비!
#문제 링크
대학과제 제외하고 오랜만에... 진짜 오래 걸렸던 문제입니다..
문제이해, 코딩 사고력 부터 꽉 막혔는데
친구의 도움 + 힌트를 통해 해결한 문제
3 일
1일차 : 10만원
2일차 : 7만원
3일차 : 6만원
원재씨는 미래를 볼 수 있는 능력이있다..
최대한 이득을 보면 얼만큼 이득을 볼것인가.
5번에서
1일차 : 1만원
2일차 : 1만원
3일차 : 3만원 -> 2만원
4일차 : 1만원
5일차 : 2만원 -> 3만원
만약 변경사항이 있다면 3일차에 파는것보다 5일차에 파는것이 더 좋다.
t = int(input())
for i in range(t):
n = int(input())
a = input().split(" ")
a = list(a)
sum = 0
maxi = int(a[-1])
for j in range(len(a)-1,-1,-1):
if j==0:
break
else:
if int(a[j-1])>maxi:
maxi = int(a[j-1])
else:
sum += maxi - int(a[j-1])
s = '#{0} {1}'.format(i+1, sum)
print(s)
1. 반복할 정수 입력을 받습니다.
2. 가격 금액을 입력을 받고. 리스트(배열)로 변환해 줍니다.
3. 이익값을 sum = 0으로 초기화 해주고
4. maxi = int(a[-1]) a 배열의 마지막(오른쪽)을 넣어줍니다.
# 처음에 이 부분에서 엄청 오래 걸렸어요... sort로 정렬을할까..? 왼쪽부터 하나씩...? 진짜 어려웠는데
5. for j in range(len(a)-1, -1, -1) range를 이해 못하시면 range함수를 검색해서 한 번 더 확인 해보시면 좋을 거 같아요!
6. if j==0 이 부분 나중에 설명하겠습니다.
7. if int(a[j-1]) > maxi 경우 maxi를 바꿔줍니다.
이런 흐름으로 흘러간다고 생각하시면 편해요!
코드가 너무 안 풀리면
직접 문을 열고 if 안으로 들어가 보는 것도 좋다고 생각합니다!
마지막으로 6번에서 if j==0 부분에서
for j in range(len(a)-1, -1, -1) 에서
3 2 1 순으로 빠지는데 마지막 1부분에서 앞부분이 비교할 게 없어서 다시 마지막 오른쪽과 비교하는 문제가 생겨서 추가했습니다. 저 부분이 없으면 출력값 이상하게 나왔거든요!
GPT 피드백!
'코테 준비!' 카테고리의 다른 글
SW Expert Academy - 1926. Calkin-Wilf tree 1 (0) | 2024.04.30 |
---|---|
SW Expert Academy - 1225 [S/W 문제해결 기본] 7일차 - 암호생성기 (0) | 2024.04.30 |
SW Expert Academy - 1926. 간단한 369게임 (0) | 2024.04.17 |
SW Expert Academy - 2071. 평균값 구하기 (0) | 2024.04.17 |
SW Expert Academy - 2072. 홀수만 더하기 (0) | 2024.04.17 |