[99클럽 코테스터디 2기][Python/비기너] 36번째 문제: Final Prices With a Special Discount in a Shop

최민지·2024년 6월 24일
0
post-thumbnail

오늘의 문제는 스택/큐! 인지 모르고 풀었다.. 일단 쓰고 다시 풀어야지 ㅋㅋㅋㅋ
이걸 일찍 확인해야 하는데 벨로그 쓸 때 생각나서 확인함.. ㅜㅜ

[Final Prices With a Special Discount in a Shop]

문제

입력과 출력

코드

class Solution:
    def finalPrices(self, prices: List[int]) -> List[int]:
        result=[0 for i in range(len(prices))]
        for i in range(len(prices)):
            for j in range(i+1,len(prices)):
                if prices[i]>=prices[j]:
                    result[i]=prices[i]-prices[j]
                    break
                else:
                    result[i]=prices[i]
        result[-1]=prices[-1]
        return result

알고리즘

prices 배열의 길이와 같은 크기의 배열 result를 생성해준다.
반복문을 먼저 현재 위치의 인덱스를 돌릴 i와 i 다음 인덱스부터 가격 비교를 할 j로 구성한다.
i보다 작거나 같은 j 인덱스의 가격이 있을 때, result[i] 즉 최종 가격은 i 인덱스의 가격에서 j 인덱스의 가격을 빼준다. 반복을 더 돌면 가격이 틀려지므로 break를 넣어준다.
작거나 같은 가격이 없을 때는 그 가격 그대로이므로, 이 조건도 추가해준다.
마지막 인덱스의 가격은 이 뒤에 뭐가 더 없기 때문에, 그대로 가져와 주는 구문을 하나 추가해준다.

회고


처음 작성 코드.. 언제나와 같은 오류..!
인덱스를 지정해서 값을 대입할때는
배열을 크기만큼으로 초기화해주는 걸 잊지 말자..!!!!


이 부분을 수정해서 돌렸을 때 코드
값이 좀 이상했다... 뭔가 작거나 같은 인덱스가 나왔을 때 바로 빠지는게 아니라 반복문을 더 도는 느낌..??

continue 때문인가 싶었지만 일단 출력을 해서 확인해보았다


예상이 맞았던 것 같다
나는 continue가 중간 반복문을 빠져나가주고 break 는 아예 끝나는 줄 알고 좀 헷갈렸는데
break는 현재 반복문을 빠져나가게 해주는 함수여서 break를 써야할것 같다고 생각을 바꿨다..ㅎㅎ


처음 문제는 해결됐는데, 4번째 인덱스부터 값 오류가 나는 것을 확인했다,,

잘 살펴보니 현재 값보다 다음 인덱스에 작거나 같은 값이 없을 때를 정의해두지 않았다는 문제점 발견,,!!


그 부분 수정하구 마지막 인덱스는 j가 i+1이여서 안도는 것 같아 따로 정의를 해주었다..!!
완성!

profile
공부..일기....

0개의 댓글