하루 한 문제는 푸는데, 막상 풀고나면 올리는걸 깜빡해서 1일 1업로드가 전혀 쉽지않은 것 같다...

 

암튼 이 문제는 런타임 오류를 해결하는게 쉽지 않았다.

 

T=int(input())
for tc in range(1,1+T):
n=int(input())
al=list(map(int,input().split()))
cnt = 0
while al != []:
al_max = max(al)
al_index = al.index(al_max)
if al_index != 0:
for q in range(al_index):
cnt += al_max - al[0]
al.remove(al[0])
else:
al.remove(al[0])
print('#{} {}'.format(tc, cnt))

1. 처음에 떠올렸던 접근법

 

max 값과 index 값을 사용해서 al_index가 0이면 해당 값을 remove로 지우면서 진행하는 방식

 

너무 많은 연산 과정으로 인행 런타임 오류 발생, 시간 초과 되어버림(답은 맞음)

 

2. 정답

T=int(input())
for tc in range(1,1+T):
n=int(input())
al=list(map(int,input().split()))[::-1]
cnt = 0
al_max = al[0]
for i in range(n):
if al_max >= al[i]:
cnt += al_max-al[i]
else:
al_max = al[i]
print('#{} {}'.format(tc, cnt))

런타임 오류를 해결하기 위해 여러 시도를 했는데, 내 힘으로는 해결하지 못했다

 

구글링을 통해 문제 해결의 실마리를 찾고 문제 해결을 할 수 있었다

 

시작점이 아닌 끝나는 지점에서 진행한다는 아이디어가 내가 이 문제를 해결할 수 있게끔 도왔다.

 

 

3. 느낀점

해당 문제를 풀면서 느낀 것은 내가 작성한 코드를 과감히 지울 수 있어야 한다는 것이다

 

기존에 작성해 둔 코드와 접근 방식을 기준으로 다른 방법을 찾다보니, 기존의 생각에서 벗어날 수 없었다. 이는 문제 해결을 늦추는 가장 큰 장애물이 되었다

 

ps. 저의 접근법이나 코드는 그저 이런 것도 있다 정도로만 보고 넘겨주시길 부탁드립니다!