백준

백준 - 그리디 알고리즘

황태건 2023. 5. 20. 15:00

https://www.acmicpc.net/step/33

 

그리디 알고리즘 단계

동전의 조건이 특별해서 동적 프로그래밍보다 빠르게 답을 찾을 수 있는 문제

www.acmicpc.net

그리디 알고리즘이란 매 순간 최선의 선택을 함으로써 문제를 해결하는 알고리즘이다.

매 순간이라는 의미는, 동적 프로그램처럼 이전까지의 계산 결과를 사용하거나

분할 정복처럼 문제를 쪼갠 뒤 얻은 답을 사용하는 것과 다르다.

그냥 그 자리에서 선택지를 골라 다음 선택상황으로 이동하는 것이다.

 

그렇기 때문에 그리디 알고리즘은 어떤 선택이 최선의 선택인지만 논리적으로 결정한다면 쉽게 해결할 수 있다.

그리디 알고리즘 카테고리의 5개 문제에 대한 최선의 선택 기준은 다음과 같다.

 

https://www.acmicpc.net/problem/11047

백준 11047 - 동전 0

동전의 개수를 최소로 해야한다. 비싼 동전을 고르면 총합이 빨리 오르므로 비싼 동전의 수가 가장 많게 한다.

 

https://www.acmicpc.net/problem/1931

백준 1931- 회의실 배정

겹치지 않는 회의 일정을 최대로 선택해야 한다. 다음 회의가 시작하려면 이전 회의가 끝나야 하므로, 회의가 여러 번 끝나도록 한다. 즉 회의를 종료 시간이 이른 순으로 정렬해 그 중 가능한 회의들을 선택한다.

 

https://www.acmicpc.net/problem/11399

백준 11399 - ATM

앞 줄에 서 있을 수록 전체 대기시간에 많이 합산된다. 따라서 대기 시간을 오름차순으로 정렬맨 앞 사람의 대기시간이 최소가 되도록 한다.

 

https://www.acmicpc.net/problem/1541

백준 1541 - 잃어버린 괄호

식의 결과값을 최소로 만들어야 하므로, + 구간은 짧게, - 구간은 길게 만든다.

-가 짝수 개가 될 경우 +가 되므로, -가 홀수 개일 때까지 식을 괄호로 감싼다.

 

https://www.acmicpc.net/problem/13305

백준 13305 - 주유소

기름통의 크기가 무제한이므로, 가격이 싼 주유소에서 기름을 많이 담아야 한다.

이를 위해 최저가의 주유소에 도착할 때마다 현재 최저가보다 더 싸게 파는 주유소까지의 거리만큼만 기름을 충전한다.