728x90
반응형
- 현재 상황에서 지금 당장 좋은 것만 고르는 방법 (= 탐욕법)
- 단순히 가장 좋아보이는 것만 반복적으로 고르는 것이 맞는가?
> 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많다.
대표문제 1
N= 1,260일때 500*2 + 100*2 + 50*1 + 10*1
큰 단위의 화폐부터 돈을 거슬러 주는 것이 최적의 해를 보장하는 이유는?
> 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로 작은 단위의 동전들을 종합해 다른해가 나올 수 없기 때문이다
n = 1260
count = 0
# 큰 단위의 화폐부터 차례대로 확인하기
array = [500, 100, 50, 10]
for coin in array:
count += n//coin # 해당화폐로 거슬러 줄 수 있는 동전의 개수 세기
n%= coin
print(count)
> 이 알고리즘의 시간 복잡도는 거슬러줘야하는 금액과는 무관하며, 동전의 총 종류에만 영향을 받는다.
대표문제 2
풀어보기
s = input()
s = '*'.join(s)
for i in range(1,len(s),2):
if int(s[i-1]) <= 1 or int(s[i+1]) <= 1:
s[i] = '+'
# 계산하기
result = eval(s)
print(result)
> 오답! 연산자 상관없이 앞에서부터 계산한 결과가 나와야 함!!
아래 영상을 참고하였습니다
728x90
반응형
'알고리즘' 카테고리의 다른 글
이코테 2021 - 이진 탐색 (0) | 2024.07.12 |
---|---|
이코테 2021 - 정렬 (0) | 2024.07.10 |
이코테 2021 - DFS & BFS (1) | 2024.06.17 |
이코테 2021 - 스택과 큐 (2) | 2024.06.12 |
[알고리즘] 시간복잡도 (0) | 2023.07.22 |