Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 포스코 청년
- Brightics를 이용한 분석
- 브라이틱스
- 삼성SDS
- 삼성SDS Brigthics
- 혼공머신
- 포스코 아카데미
- 혼공머신러닝딥러닝
- 브라이틱스 서포터즈
- Brightics Studio
- Brightics
- 혼공학습단
- 개인 의료비 예측
- 팀 분석
- 삼성 SDS Brigthics
- Brigthics를 이용한 분석
- 삼성 SDS
- 삼성SDS Brightics
- 캐글
- Brigthics
- 노코드AI
- 혼공
- 데이터분석
- 데이터 분석
- Brigthics Studio
- 직원 이직률
- 직원 이직여부
- 추천시스템
- 영상제작기
- 모델링
Archives
- Today
- Total
데이터사이언스 기록기📚
[프로그래머스] Level 3_이중우선순위큐(힙) 본문
📌문제 유형
힙(Heap)
📌문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌나의 문제풀이
1차 시도(66.7)
import heapq
def max_heap(min_heapq):
max_heapq = []
num_list = []
if min_heapq == []:
return num_list
for item in min_heapq:
heapq.heappush(max_heapq,(-item,item))
heapq.heappop(max_heapq)
while max_heapq:
heapq.heappush(num_list, heapq.heappop(max_heapq)[1])
return num_list
def solution(operations):
answer = []
num_list = []
for num in operations:
# 값 넣기
if num.startswith('I'):
num = num.replace('I','')
heapq.heappush(num_list, int(num))
elif num.startswith('D'):
# 최솟값 삭제
if int(num.replace('D','')) == -1:
heapq.heappop(num_list)
# 최댓값 삭제
else:
num_list = max_heap(num_list)
# num_list에서 최댓값, 최솟값 순서대로 answer에 넣기
if list(num_list) == []:
return [0,0]
else:
answer.append(max(list(num_list)))
answer.append(min(list(num_list)))
return answer
2차 시도(성공)
- 실패요인 : 최솟값 삭제할 때, 빈 큐에 데이터 삭제연산이 있으면 무시하라는 조건이 없어서 런타임 에러 발생
- heapq 만들기
- (값 넣기) startswith, replace, strip 이용하여 heapq에 값 넣기
- (값 삭제)
- 최솟값 삭제 : heapq.heappop() 이용
- 최댓값 삭제 : max_heap 함수 정의 -> 최대 힙 구현 후 최댓값 삭제, 새로운 리스트에 최대 힙 넣기
- (answer 출력) [최댓값, 최솟값] 출력
import heapq
def max_heap(min_heapq):
max_heapq = []
num_list = []
# 빈 큐에 데이터 삭제, 해당 연산 무시
if min_heapq == []:
return num_list
# 최대 힙 만들고 최댓값 제외
for item in min_heapq:
heapq.heappush(max_heapq,(-item,item))
heapq.heappop(max_heapq)
# 최대 힙 구성형태 [(-9,9),(-4,4),(5,-5)] -> 원래 값은 [1]에 있는 값
# 원래 값들로만 구성된 리스트 생성
while max_heapq:
heapq.heappush(num_list, heapq.heappop(max_heapq)[1])
return num_list
def solution(operations):
answer = []
num_list = []
for num in operations:
# 값 넣기
if num.startswith('I'):
num = num.replace('I','')
num = num.strip()
heapq.heappush(num_list, int(num))
elif num.startswith('D'):
# 최솟값 삭제
if num == 'D -1':
# 빈 큐에 데이터 삭제 연산, 무시하기
if num_list == []:
continue
else:
heapq.heappop(num_list)
# 최댓값 삭제
else:
num_list = max_heap(num_list)
# num_list에서 최댓값, 최솟값 순서대로 answer에 넣기
if list(num_list) == []:
return [0,0]
else:
answer.append(max(list(num_list)))
answer.append(min(list(num_list)))
return answer
📌리뷰
- 문제의 조건 잘 보기
- 최대 힙 구현 익히기
- 공백 제거
[python] 파이썬 공백 제거 (replace, strip) 2가지 방법
안녕하세요. BlockDMask입니다. 오늘은 파이썬 문자열에서 공백을 제거하는 2가지 방법에 대해서 알아보겠습니다. <목차> 1. 파이썬 replace 함수 이용해서 공백 제거 2. 파이썬 strip함수 이용 해서 공
blockdmask.tistory.com
728x90
'Coding Test > 프로그래머스(Python)' 카테고리의 다른 글
[프로그래머스] Level 1_최소직사각형(완전탐색) (0) | 2022.09.28 |
---|---|
[프로그래머스] Level 2_카펫(완전탐색) (0) | 2022.09.27 |
[프로그래머스] Level 2_더 맵게(힙) (1) | 2022.09.25 |
[프로그래머스] Level2_전화번호 목록(해시) (0) | 2022.09.24 |
[프로그래머스] Level2_위장(해시) (0) | 2022.09.24 |
Comments