😆 동빈나 님의 이코테 2021 강의 몰아보기를 보면서 공부한 내용을 정리하고 있습니다. 책은 이것이 취업을 위한 코딩 테스트다 with 파이썬을 참고하여 학습했습니다.😊
그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다.
일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구
→ 그리디 해법은 그 정당성 분석이 중요!
🎈 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토하자!
하지만 그리디 알고리즘은 일반적인 상황에서는 최적의 해를 보장할 수 없을 때가 많다!
문제에 대한 정당성 분석이 매우 중요
즉 그리디 알고리즘에서는 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 한다.
→특정한 문제를 만났을 때 단순히 현재 상황에서 가장 좋아보이는 것만을 선택해도 문제를 풀 수 있는지 파악해보자.
→그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 ‘가장 큰 순서대로’ , ‘가장 작은 순서대로’와 같은 기준을 알게 모르게 제시해준다.
즉 그리디 알고리즘 문제는 대체로 정렬 알고리즘과 짝을 이뤄 출제되니까 생각하면서 풀자.
그리디 알고리즘의 대표적인 문제들
→거스름돈 문제
→해결
n = 1260
count = 0
#큰 단위 화폐부터 차례대로
coin_types = [500,100,50,10]
for coin in coin_types:
count += n #해당 화폐로 거슬러 줄 수 있는 동전의 개수 세기
n %= coin
print(count)
코딩테스트 문제를 만났을 때, 바로 문제 유형을 파악하기 어렵다면 그리디 알고리즘을 의심하고, 문제를 해결할 수 있는 탐욕적인 해결법이 존재하는지 고민해보자
→ 처음에 문제를 만났을 때는 다양한 아이디어를 고려해야한다.
코딩테스트에서 구현이란 ‘머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정’이다. 어떤 문제를 풀든 간에 소스코드를 작성하는 과정은 필수이므로 구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다.
👻 구현 문제 풀 때는 규칙성
을 어느정도 생각할 필요가 있다 !!