-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
코드 질문
21.01.25 13:51 작성 조회수 136
0
선생님의 좋은 강의 덕분에 막막했던
코딩테스트의 기본기를 탄탄하게 다지고 있습니다 ^^
정말 감사드립니다!
다름이 아니라 인강 내용을 복습하면서 문제를 다시 풀어보던 도중
높은 탑 쌓기 문제에서 in4,5 값을 넣었을 때 나오는 결과가
답보다 1씩 적게 출력이 되어서 오랫동안 어떤 부분이 잘못됐는지
고민해보았지만 도저히 어떤 부분에서 1이 덜 더해져서
출력되는지 찾지 못해 질문드립니다 ㅠㅠ
if __name__=="__main__":
n=int(input())
tot=[]
for i in range(n) :
s,h,w= map(int,input().split())
tot.append((s,h,w))
tot.sort(reverse=True)
tot.insert(0,0)
dy=[0]*(n+1)
dy[1]=tot[1][1]
for i in range(2,n+1) :
maxi=-1
for j in range(1,i):
if tot[j][2]>tot[i][2] and dy[j]>maxi:
maxi=dy[j]
dy[i]=maxi+tot[i][1]
print(max(dy))
답변을 작성해보세요.
1
김태원
지식공유자2021.01.26
안녕하세요^^
maxi=0으로 초기화해야 합니다.
j for문이 돌면서 if조건이 참이 되는 경우가 없을 때도 있습니다.
그리고 논리적으로 효율적인 코드가 되려면 dy[i]=maxi+tot[i][1]은 j for문이 끝나고 한 번만 하는게 좋습니다.
답변 1