728x90
반응형

그리디 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다.

정렬을 사용하면 쉽게 풀 수 있는 그리드 알고리즘 문제들이 되게 많다.

 

백준 알고리즘 문제 풀이)

jinho-study.tistory.com/62

 

백준 알고리즘 1931번 회의실배정(python)

그리디 알고리즘 문제이다. 정렬을 사용하면 쉽게 풀 수 있다! lambda를 사용해 끝나는 시간 순으로 정렬해주는 게 핵심이다. li = [list(map(int, input().split())) for _ in range(int(input()))] li = sorted(..

jinho-study.tistory.com

jinho-study.tistory.com/111

 

백준 알고리즘 2839번 설탕 배달(python)

5킬로그램짜리를 최대한 많이 배달하는 게 포인트다. 입력 N이 5로 나누어질 때까지 3을 계속 빼고 이 과정을 몇 번 반복했는지 새면 된다. 3을 계속 빼도 끝까지 5로 나누었을 때 0이 안된다면 N킬

jinho-study.tistory.com

jinho-study.tistory.com/198

 

백준 알고리즘 11399번 ATM(python)

우선 입력을 리스트에 저장하고 오름차순 정렬해준다. 그 후 첫 번째 값부터 마지막 값까지 누적 값을 순서대로 더해주면 된다. EX) 입력: 3, 1, 4, 3, 2 리스트로 만든 후 정렬 -> [1, 2, 3, 3, 4] 누적 값

jinho-study.tistory.com

jinho-study.tistory.com/195

 

백준 알고리즘 11047번 동전 0(python)

K이하인 동전 중에서 제일 큰 것부터 순서대로 꽉꽉 채운다는 느낌으로 풀면 된다. EX) K = 4200, 입력: 1 5 10 50 100 500 1000 5000 10000 50000 ans = 0 1) 4200 - 1000*4 = 200 -> ans = 0 + 4 = 4 2) 200 - 1..

jinho-study.tistory.com

jinho-study.tistory.com/301

 

백준 알고리즘 5585번 거스름돈(python)

11047번 동전 0과 거의 똑같은 문제이다. 거스름돈보다 싼 동전 중에서 제일 큰 것부터 순서대로 꽉꽉 채운다는 느낌으로 풀면 된다. change = 1000 - int(input()) cnt = 0 for c in [500, 100, 50, 10, 5, 1]: i..

jinho-study.tistory.com

jinho-study.tistory.com/39

 

백준 알고리즘 1541번 잃어버린 괄호(python)

처음으로 '-'가 나오는 순간부터 그 뒤에 있는 숫자들은 무조건 빼야 된다는 것을 이해하면 간단하게 풀 수 있다! EX) 입력이 "55+10-50+40-20+20"이면 li = ["55+10", "50+40", "20+20"]가 되는데 처음 요소인 "5.

jinho-study.tistory.com

jinho-study.tistory.com/75

 

백준 알고리즘 2217번 로프(python)

k개의 로프를 사용할 때 들어 올릴 수 있는 중량은 버틸 수 있는 중량이 제일 작은 로프의 최대 중량 * k라는 점이 핵심이다. EX) 15, 10 로프 2개를 사용할 경우 최대 10 * 2 = 20인데 이유는 15가 10보

jinho-study.tistory.com

jinho-study.tistory.com/36

 

백준 알고리즘 1449번 수리공 항승(python)

물이 샌 곳을 막는데 막대기는 왼쪽 끝과 오른쪽 끝 0.5를 제외한 1만큼의 여유가 필요하다. 현재 물이 샌 곳에 테이프 길이를 더하고 1을 뺀 값이 다음 물이 샌 곳보다 작으면 막대기 한 개가 필

jinho-study.tistory.com

jinho-study.tistory.com/302

 

백준 알고리즘 1439번 뒤집기(python)

입력으로 받은 문자열이 0에서 1로, 1에서 0으로 총 몇 번 바뀌는지를 구하면 쉽게 풀 수 있다. 홀수번 바뀔 경우 -> cnt//2 + 1 짝수번 바뀔 경우 -> cnt//2 s = input() cnt = 0 for i in range(len(s)-1): if s..

jinho-study.tistory.com

jinho-study.tistory.com/303

 

백준 알고리즘 2847번 게임을 만든 동준이(python)

마지막 레벨의 점수부터 확인을 하는데, 만약 뒷 단계보다 앞 단계의 점수가 더 크다면 앞 단계의 점수를 뒷 단계의 점수보다 1 작게 되도록 빼주면 된다. N = int(input()) li = [int(input()) for _ in range(N

jinho-study.tistory.com

jinho-study.tistory.com/304

 

백준 알고리즘 1946번 신입 사원(python)

서류심사 성적을 기준으로 오름차순 정렬 -> 면접 성적의 최솟값(확인한 것 중 제일 높은 순위)이 몇 번 업데이트되는지 확인 for _ in range(int(input())): N = int(input()) li = [list(map(int, input().split..

jinho-study.tistory.com

jinho-study.tistory.com/305

 

백준 알고리즘 4796번 캠핑(python)

간단한 수학 문제이다. min(V%P, L) 부분이 핵심인 것 같다. i = 1 while 1: L, P, V = map(int, input().split()) if L == 0 and P == 0 and V == 0: break res = L*(V//P) + min(V%P, L) print("Case {0}: {1}"...

jinho-study.tistory.com

jinho-study.tistory.com/306

 

백준 알고리즘 13305번 주유소

기름 가격의 최솟값을 잘 사용하면 쉽게 풀 수 있다. -> res += 현재까지 확인한 기름 가격들의 최솟값 * 현재 가야 되는 거리 EX) dis = [2, 3, 1], oil = [5, 2, 4, 1] 처음엔 기름 가격의 최솟값이 5이므로 5*

jinho-study.tistory.com

https://jinho-study.tistory.com/1101

 

백준 알고리즘 11256번 사탕(python)

기본적인 그리디 알고리즘 문제이다. for _ in range(int(input())): j, N = map(int, input().split()) li = [] for i in range(N): r, c = map(int, input().split()) li.append(r*c) li.sort(reverse=True) cnt..

jinho-study.tistory.com

 

728x90
반응형

+ Recent posts