오늘의 문제는 스택/큐! 인지 모르고 풀었다.. 일단 쓰고 다시 풀어야지 ㅋㅋㅋㅋ
이걸 일찍 확인해야 하는데 벨로그 쓸 때 생각나서 확인함.. ㅜㅜ
[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이여서 안도는 것 같아 따로 정의를 해주었다..!!
완성!