뚜당탕탕
[SWEA / python ] 1859. 백만 장자 프로젝트 (fail) 본문
👇 주석 없는 풀이법
T = int(input())
for case in range(1, T + 1):
t = int(input())
li = list(map(int, input().split()))
result = 0
mmm = max(li)
max_idx = li.index(mmm)
start_idx = 0
tmp_li = li[ start_idx : len(li) ]
for i in range(len(li)) :
if i < max_idx :
result += (mmm - li[i])
elif i == max_idx :
if i == (len(li)-1) :
break
else :
start_idx = i+1
tmp_li = li[ start_idx : len(li) ]
mmm = max(tmp_li)
max_idx = li.index(mmm)
print("#{} {}".format(case, result))
👇 주석 있는 풀이법.
T = int(input())
## 총 몇 개의 테스트 케이스인지 입력받는다.
for case in range(1, T + 1):
## 테스트 케이스의 수 만큼 반복한다.
t = int(input())
## 한 번의 테스트 케이스에서, 며칠의 데이터를 사용할 것인지 입력받는다.
li = list(map(int, input().split()))
## t 일 만큼의 가격 데이터를 정수의 형태로, 띄어쓰기로 구분하여 입력 받는다.
## 가격 데이터를 인덱스로 사용하기 위해 리스트 타입으로 저장한다.
result = 0
## 이득을 담을 변수. 이득이 생길 때 마다 추가 저장할 것이므로, 초기값 0으로 설정한다.
mmm = max(li)
## 가격데이터 리스트에서 최대값을 뽑는다.
max_idx = li.index(mmm)
## 최대 가격의 인덱스를 뽑는다.
start_idx = 0
## 리스트에서 최대가격이 중간에 위치할 경우, 이후 새로운 최대가격을 뽑을 때 필요한 시작 인덱스이다.
tmp_li = li[ start_idx : len(li) ]
## 첫 번 째 최대가격 이후에 새로운 최대가격을 뽑을 때 필요한 임시 리스트이다.
## 다시 생각해 보니까, start_idx 를 굳이 사용하지 않고 i+1 로 바로 사용해도 된다.
for i in range(len(li)) :
## 리스트의 모든 인덱스를 돌 것이다.
if i < max_idx :
result += (mmm - li[i])
## 현재 인덱스가 최대가격의 인덱스보다 작다면, 구입하여 팔 것이므로,
## 최대가격에서 현재 가격을 뺀 차이를 result 변수에 더해준다
elif i == max_idx :
## 현재 인덱스가 최대가격의 인덱스와 같다면, 그러니까, 오늘이 최대가격 이라면,
if i == (len(li)-1) :
break
## 현재 인덱스가 최대가격인데, 리스트의 마지막 원소라면, 더이상 할 게 없으므로 반복문을 나간다.
else :
## 현재 인덱스가 최대가격인데, 가격 리스트의 원소들이 남아있다면, 이후 남은 리스트에서
## 새로운 최대가격을 뽑고, 최대가격에 팔아야 이득이 많이 남는다.
start_idx = i+1
tmp_li = li[ start_idx : len(li) ]
## 오늘 최대가격으로 이미 팔았으므로, 내일부터의 가격 리스트를 새로운 임시 가격 리스트(tmp_li)에 담는다.
mmm = max(tmp_li)
max_idx = li.index(mmm)
## 새로 담은 임시 가격 리스트(tmp_li)에서, 새로운 최대가격(mmm)과 최대가격의 인덱스(max_idx)를 뽑는다.
## 주의할 것은, 여기서 뽑는 최대가격(mmm)은 임시 가격 리스트(tmp_li)에서의 최대 가격(mmm)을 뽑고,
## 인덱스는 전체 리스트(li)에서의 인덱스로 뽑아야 한다. 그래야 i(li의 인덱스) 와 비교를 할 수 있다.
## 그리고 새로운 임시 가격 리스트(tmp_li)에서 최대가격이 뽑히면, 다시 반복문 처음으로 돌아가,
## li 의 인덱스 i 가 최대가격 인덱스에 다다를 때까지, 최대가격과의 차이를 result 에 더한다.
print("#{} {}".format(case, result))
## 파이썬 문자열 포맷팅. 문자열 "#{} {}" 형식으로 출력한다.
## 첫 번째 문자열에는 case 의 번호가, 두 번째 문자열에는 reslut 의 값이 들어있다.
중요한건__!
4/10 맞고 런타임에러로 FAIL 떴다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ..............................................................
또 해보면 된다..
풀게 되면, 코드 추가할 것이다.
'💯 문제 풀이 > SWEA' 카테고리의 다른 글
[SWEA / python ] (2071) 평균값 구하기 (round() 함수) (0) | 2021.10.06 |
---|---|
[SWEA / python ] (2072) 홀수만 더하기 (0) | 2021.10.06 |
Comments