그리디
탐욕 알고리즘.
현재 상황에서 지금 당장 좋은 것만 고르는 방법으로 현재의 선택이 나중에 미칠 영향은 고려하지 않는다.
코딩테스트에서의 그리디
문제를 풀 수 있는 최소한의 아이디어를 떠올릴 수 있는 능력을 요구한다.
ex)
'거스름돈' 문제 (그리디 알고리즘의 대표 문제)
500원, 100원, 50원의 동전으로 거스름돈을 내어줄 때 최소의 동전 갯수로 거스름돈을 내어주는 방법은?
해결방법
가장 큰 화폐 단위부터 돈을 거슬러 준다.
다음과 같이 각 문제에서의 아이디어를 떠올릴 수 있고 이것이 정당한 지 검토할 수 있으면 그리디 문제를 풀 수 있다.
내가 백준 그리디 문제들을 풀면서 느낀 점
지금 상황에서 가장 좋은 것을 고르는 그리디의 특성상 문제의 흐름을 순응적으로, 그대로 따라가기 보다는
주어진 조건에서 가장 빠르게, 정확하게 문제를 해결할 수 있는 모든 방법을 고려해 보아야 한다.
예를들어, 백준 11047번도 주어진 단위의 동전들으로 최소 개수를 고르는 문제이며 for문을 단위가 큰 값(동전 리스트의 뒷쪽 부터 시작한다면 시간 초과를 피할 수 있다)
나는 이 문제를 1원부터 돌면서 4200원에 맞는 가장 큰 단위(1000원)를 찾도록 코드를 작성하였더니 시간초과가 나왔다.
비단 이 문제 뿐 아니라 모든 코테 문제에서 여러가지 시야를 가질 수 있도록 더 훈련해야 할 것 같다.
'백준' 카테고리의 다른 글
백준 10814번 C++ pair, stable_sort 사용해서 해결 (0) | 2023.07.05 |
---|---|
백준 1463번 C++ , 다이나믹 프로그래밍으로 풀기 (0) | 2023.06.29 |
[자료구조] 스택(STACK), 큐(QUEUE) (0) | 2023.06.21 |
백준 C++ 1978번, 소수 판별하는 법, 실버 문제 (0) | 2023.03.05 |
백준 2941번 c++ , npos 의미, string find함수 (1) | 2023.02.21 |