그리디 알고리즘 예제 - 3
문제 분석
손으로 풀어보기
슈도코드
n(수열의 크기)
pluspq(양수 우선순위 큐) minuspq(음수 우선순위 큐)
one(1의 개수) zero(0의 개수)
for n 반복:
데이터를 4개의 그룹에 분리 저장
# 양수 우선순위 큐는 내림차순 정렬을 위해 -1을 곱하여 저장
while 양수 우선순위 큐 크기가 1개가 될 때까지:
수 2개를 큐에서 뽑음(뽑은 수가 -1을 곱해줌)
2개의 수를 곱한 값을 결괏값에 더함
if 양수 우선순위 큐에 데이터가 남아 있으면:
해당 데이터를 결괏값에 더함
while 음수 우선순위 큐 크기가 2보다 작을 때까지:
수 2개를 큐에서 뽑음
2개의 수를 곱한 값을 결괏값에 더함
if 양수 우선순위 큐에 데이터가 남아 있고, 데이터 0이 1개도 없으면:
해당 데이터를 결괏값에 더함
숫자 1의 개수를 결괏값에 더함
결괏값 출력코드 구현 - 파이썬
코드 구현 - 자바
Last updated