-
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이래서 문제를 주의 깊게 읽어야한다.
def solution(number, k): return sorted(number)[k:][::-1]
heapq를 사용해보았다. 앞에서부터 작은걸 없에버렸고 더 작은게 나타나면 없엤다.
import heapq def solution(number, k): heap = [] number = [int(i) for i in number] for idx,num in enumerate(number): if len(heap) < k: heapq.heappush(heap,(-num,num,idx)) continue if num < heap[0][1]: heapq.heappop(heap)[-1] heapq.heappush(heap,(-num,num,idx)) res = "" print(heap) delIndex = [i[2] for i in heap] for idx in range(len(number)): if idx in delIndex: continue res+=str(number[idx]) return res
아래에서 실패 그러면 반대로 큰 애부터 줏어야겠다.
입력값 〉 "4177252841", 4 기댓값 〉 "775841" 실행 결과 〉 실행한 결괏값 "477584"이(가) 기댓값 "775841"와(과) 다릅니다. 출력 〉 [(-2, 2, 4), (-2, 2, 6), (-1, 1, 1), (-1, 1, 9)] 와,, 힙큐따위는 필요없었다.
그냥 앞에서부터 큰 수를 취하는 생각은 맞았다.
근데 k를 빼면서 k가 0이 될때 그 뒤에는 보지 않아도 된다. 이 부분을 생각못했다.
중간에 while을 넣어 현재 값보다 작은 값들을 모조리 빼는 부분도 인상깊다.
def solution(number, k): res = [] for num in number: while res and res[-1] < num and k>0: res.pop() k -=1 res.append(num) while k > 0: res.pop() k-=1 return ''.join(res)
'2020년 > 코테' 카테고리의 다른 글
[leetcode] Longest Substring with At Least K Repeating Characters (0) 2020.11.26 [leetcode]Smallest Integer Divisible by K (0) 2020.11.25 [프로그래머스 lv2, lv3 을 풀자!] 삼각 달팽이 (0) 2020.10.18 [프로그래머스 Lv1,Lv2 다풀기 프로젝트] 소수찾기 (0) 2020.10.04 [프로그래머스 Lv1,Lv2 다풀기 프로젝트] 2016년 (0) 2020.10.03