Hits

안녕하세요. 모카의 머신러닝 입니다. 이번 포스팅에서는 백준 알고리즘 문제 풀이에 대해 포스팅하도록 하겠습니다.


코드는 이곳을 참고했음을 밝힙니다.


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)


지금까지 백준 알고리즘 그리디 알고리즘 부분이었습니다.

읽어주셔서 감사합니다. 😃