Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- BFS
- 클래스 불균형
- Focal loss
- Attention is all you need
- 자연어처리
- greedy
- Transformer
- VGGNet
- retinaNet
- 백준
- GoogleNet
- dl
- Vision Transformer
- 딥러닝
- LeNet
- algorithm
- 논문리뷰
- 그리디
- greedy algorithm
- 코딩 테스트
- Coding Test
- DFS
- 탐욕법
- 알고리즘
- GPT
- Deep Learning
- AlexNet
- ResNet
- vit
Archives
- Today
- Total
자율주행 미래를 위한 대학원생
[Algorithm] 그리디 알고리즘(탐욕법, Greedy Algorithm) 이해하기 본문
이번에 살펴볼 알고리즘은 그리디 알고리즘이다. 기본적인 알고리즘으로 이것을 처음으로 다루었어야했는데 BFS/DFS부터 다뤄버렸다… 그리디 알고리즘의 경우 구현보다는 문제해결 능력을 요구하기에 빠르게 이해하고 이후에 문제를 다루어 볼 것이다.
그리디 알고리즘(탐욕법, Greedy Algorithm)이란?
- 현재 상황에서 가장 좋은 것만 고르는 방법을 의미한다.
- 단순하지만 강력한 문제 해결 방법이다.
- 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토한다.
코딩 테스트의 유형
- 그리디 알고리즘의 경우 문제 출제의 폭이 매우 넓어 문제를 풀기위한 능력을 요구한다.
- 하지만, 최단 경로를 구하는 다익스트라 알고리즘의 경우 그리디 알고리즘으로 분류가 되어 암기가 필요하다.
대표적인 그리디 알고리즘 예제
- 거스름돈 문제
- 거스름돈이 500원, 100원, 50원, 10원 짜리 동전이 무한이 존재한다 가정할 때, 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야할 동전의 최소 개수는?(단, N은 항상 10의 배수)
- Ex) N=1260의 경우 500원 2개, 100원 2개, 50원 1개, 10원 1개 총 6개를 거슬러 주어야 한다.
즉, 가장 큰 화폐 단위부터 돈을 거슬러 주면 된다. N = int(input()) Coin = [500, 100, 50, 10] cnt = 0 #거스름돈 동전의 개수 for i in Coin: # 500원 동전부터 개수 Count cnt += (N//i) # 사용한 동전의 개수(몫) 만큼 더해준다. N %= i # N은 남은금액으로 update print(cnt)
그리디 알고리즘 문제의 정당성
- 만약 위와 같은 동일한 문제에서 동전이 500원, 400원, 100원 이라면 어떻게 될까?
- 위와 같은 풀이 방법이라면 500원 1개, 100원 3개로 총 4개로 도출이 되지만 400원 2개로 더 작은 경우의 수가 발생할 수 있다.
- 그리디 알고리즘 문제에서는 이처럼 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 한다.
'Theory' 카테고리의 다른 글
대표적인 CNN 구조들(LeNet, AlexNet, ResNet 등) (1) | 2024.01.09 |
---|---|
[Algorithm] BFS와 DFS의 이해와 구현(Python) (1) | 2023.12.12 |