🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

코드 질문

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

답변을 작성해보세요.

1

안녕하세요^^

maxi=0으로 초기화해야 합니다.

j for문이 돌면서 if조건이 참이 되는 경우가 없을 때도 있습니다.

그리고 논리적으로 효율적인 코드가 되려면 dy[i]=maxi+tot[i][1]은 j for문이 끝나고 한 번만 하는게 좋습니다.

채널톡 아이콘