출처: www.youtube.com/watch?v=2zjoKjt97vQ

 

 

 

<그리디 알고리즘(탐욕법)>

- 현재 상황에서 지금 당장 좋은 것만 고르는 방법

- 일반적인 그리디 알고리즘을 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력 요구

- 그리디 해법은 그 정당성 분석이 중요

    -> 단순히 가장 좋아 보이는 것을 반복적으로 선택해도 최적의 해를 구할 수 있는지 검토

- 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많음

=> 코테에서의 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서 이를 추론할 수 있어야 풀리도록 출제됨

=> 즉, 탐욕법을 사용했을 때 해당 해가 최적의 해가 되는 경우가 많이 출제 된다

더보기

ex) 거스름돈 문제

(정당성 분석) 가장 큰 화폐 단위 부터 돈을 거슬러 주는 것이 최적의 해를 보장하는 이유?

- 가지고 있는 동전 중에서 큰 단위가 항상 작은 단위의 배수이므로, 작은 단위의 동전들을 종합해 다른 해가 나올 수 없기 때문

 

 


<구현: 시뮬레이션과 완전 탐색>

- 구현: 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정

- 알고리즘 대회에서 구현 유형의 문제란??

    -> 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제

(예시)

1. 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제

2.  실수 연산들을 다루고, 특정 소수점 자리까지 출력해야하는 문제

3. 문자열을 특정한 기준에 따라서 끊어 처리해야하는 문제

4. 적절한 라이브러리를 찾아서 사용해야하는 문제(모든 순열, 모든  조합)

 

==> 많은 연습이 필요!! 라이브러리들을 미리 알고 공부해두는 게 좋음

 

- 일반적으로 2차원 공간(행렬)에서의 처리를 요구함

왼쪽 위 0,0

- 시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용

#동, 북, 서, 남
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]

#현재 위치
x ,y =2, 2

for i in range(4):
    #다음 위치
    nx= x + dx[i]
    ny =y + dy[i]
    print(nx, ny)

 

 

 

'자윤이와고리즘 > Algorithm' 카테고리의 다른 글

다이나믹 프로그래밍(dynamic Programming)  (0) 2020.10.04
이진탐색  (0) 2020.10.03
스택, 큐, 재귀함수, DFS, BFS  (0) 2020.09.30
Brute-Force  (0) 2020.06.18
Hash  (0) 2020.06.15

+ Recent posts