안녕하세요. 모카의 머신러닝 입니다. 이번 포스팅에서는 백준 알고리즘 문제 풀이에 대해 포스팅하도록 하겠습니다.
코드는 이곳을 참고했음을 밝힙니다.
1. Greedy algorithm
백준 11047번
https://www.acmicpc.net/problem/11047
N, K = map(int, input().split())
A = [0] * N
for i in range(N):
A[i] = int(input())
count = 0
for i in range(N-1, -1, -1):
if A[i] <= K:
count += int(K/A[i])
K = K % A[i]
print(count)
백준 1715번
https://www.acmicpc.net/problem/1715
from queue import PriorityQueue
N = int(input())
pq = PriorityQueue()
for _ in range(N):
date = int(input())
pq.put(date)
data1 = 0
data2 = 0
sum = 0
while pq.qsize()>1:
data1 = pq.get()
data2 = pq.get()
temp = data1 + data2
sum += temp
pq.put(temp)
print(sum)
백준 1744번
https://www.acmicpc.net/problem/1744
from queue import PriorityQueue
N = int(input())
plusPq = PriorityQueue()
minusPq = PriorityQueue()
one = 0
zero = 0
for i in range(N):
data = int(input())
if data>1:
plusPq.put(data*-1)
elif data == 1:
one += 1
elif data == 0:
zero += 1
else:
minusPq.put(data)
sum = 0
while plusPq.qsize() > 1:
first = plusPq.get() * -1
second = plusPq.get() * -1
sum += first*second
if plusPq.qsize() > 0:
sum += plusPq.get()*-1
while minusPq.qsize() > 1:
first = minusPq.get()
second = minusPq.get()
sum += first * second
if minusPq.qsize() > 0:
if zero == 0:
sum += minusPq.get()
sum += one
print(sum)
지금까지 백준 알고리즘 그리디 알고리즘 부분이었습니다.
읽어주셔서 감사합니다. 😃