728x90
https://programmers.co.kr/learn/courses/30/lessons/42883
while (최근에 넣은 수 보다 지금 넣는 수가 더 크다면 ):
pop을 해준다.
그게 현재 가장 최적의 값이니까!!
코드 :
def solution(number, k):
answer = []
for num in number :
while k > 0 and answer and answer[-1] < num :
answer.pop()
k -= 1
answer.append(num)
return ''.join(answer[:len(answer)-k])
문제를 풀고 든 생각 : 왜 반환할 때 [:len(answer)-k]일까?
그냥 [:-k] 해도 될텐데
라고 생각해서 그렇게 만들어 제출하였는데 틀렸다.
그 이유는 k가 0일 때 [:0]이 되어버려서 아무것도 안나오기때문이다.
물론 k가 있다면 잘 작동한다.
그래서 if문을 이용하도록 만들면 [:-k]를 이용해도 된다.
반환할 때 [:-k]사용 코드 :
def solution(number, k):
arr = []
for n in number :
while k and arr and arr[-1] < n :
arr.pop()
k-=1
arr.append(n)
return (''.join(arr))[:-k] if k else ''.join(arr)
이렇게
A if 조건 else B를 이용할 수 있다.
참고 블로그 :
복습 :
✅ 20220622
✅ 20220624
✅ 20220626
✅ 20220630
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]섬 연결하기_Greedy(그리디) (0) | 2022.06.19 |
---|---|
[Python/프로그래머스]구명보트_Greedy(그리디) (0) | 2022.06.19 |
[Python/프로그래머스]조이스틱_Greedy(그리디) (0) | 2022.06.19 |
[Python/프로그래머스] 등굣길_DP (0) | 2022.06.18 |
[Python/프로그래머스]카펫_완전탐색 (0) | 2022.06.16 |