StringBuilder vs StringBuffer

  1. 탐욕(Greedy) 알고리즘
    1. 적용 조건
    2. 예제 - 활동 시간 선택
      1. 구현 코드
  2. 관련 문제
    1. 문제1. 백준[2839] 설탕 배달
      1. 작성 코드
    2. 문제2. 백준[1931] 회의실 배정
      1. 작성 코드

탐욕(Greedy) 알고리즘

매 순간 현재 기준으로 최선의 답을 선택해 나가는 기법
  • 즉, 당장 눈앞에 보이는 최적의 답을 찾음
  • 결과적으로 최적의 답이 아닐 수 있음

적용 조건

탐욕 알고리즘은 빠르지만 최적의 답을 보장하지 않는다.


아래 조건에 해당하는 경우 적용이 가능하다.

  • 탐욕적 선택 특성(Greedy Choice Property) – 앞의 선택이 이후의 선택에 영향을 주지 않음
  • 최적 부분 구조(Optimal substructure) – 문제에 대한 최적의 답이 부분문제에 대해서도 역시 최적의 답

예제 - 활동 시간 선택

N개의 활동과 각 활동의 시작/종료 시간이 주어졌을 때
한 사람이 최대한 많이 할 수 있는 활동의 수 구하기

ActivityABCDE ActivityCABDE ActivityCBE
시작14246시작21446시작246
종료553710 종료355710 종료3510

구현 코드

image


관련 문제

문제1. 백준[2839] 설탕 배달

image

작성 코드

image


문제2. 백준[1931] 회의실 배정

image

작성 코드

image