Coding Test/알고리즘 이론

탐욕 - Greedy 알고리즘 - leet code 35문제(20+15)

hyunkookim 2025. 1. 3. 16:18

Easy 난이도


Problem 1: Best Time to Buy and Sell Stock II (LeetCode 122)

설명: 주어진 주식 가격 배열에서 여러 번의 거래를 통해 얻을 수 있는 최대 이익을 계산합니다.
핵심 개념: 그리디 알고리즘, 주식 거래.
링크: LeetCode 122


Problem 2: Assign Cookies (LeetCode 455)

설명: 아이들에게 쿠키를 나눠줄 때, 최대한 많은 아이들이 만족하도록 쿠키를 분배합니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 455


Problem 3: Lemonade Change (LeetCode 860)

설명: 레모네이드 가게에서 각 손님에게 거스름돈을 줄 수 있는지 확인하는 문제입니다.
핵핵심 개념: 그리디 알고리즘, 거스름돈 문제.
링크: LeetCode 860


Problem 4: Two City Scheduling (LeetCode 1029)

설명: 사람들을 두 도시로 보내는 비용을 최소화하는 방법을 찾는 문제입니다.
핵심 개념: 그리디 알고리즘, 비용 최소화.
링크: LeetCode 1029


Problem 5: Minimum Cost to Move Chips to The Same Position (LeetCode 1217)

설명: 칩을 같은 위치로 이동시키는 데 드는 최소 비용을 계산하는 문제입니다.
핵심 개념: 그리디 알고리즘, 수학적 접근.
링크: LeetCode 1217


Problem 6: Maximum Subarray (LeetCode 53)

설명: 주어진 정수 배열에서 연속된 부분 배열의 합이 최대가 되는 값을 찾는 문제입니다.
핵심 개념: 그리디 알고리즘, 동적 계획법.
링크: LeetCode 53


Problem 7: Can Place Flowers (LeetCode 605)

설명: 꽃을 심을 수 있는 화단 배열에서 주어진 수의 꽃을 심을 수 있는지 확인하는 문제입니다.
핵심 개념: 그리디 알고리즘, 배열 탐색.
링크: LeetCode 605


Problem 8: Is Subsequence (LeetCode 392)

설명: 문자열 s가 문자열 t의 부분 수열인지 확인하는 문제입니다.
핵심 개념: 그리디 알고리즘, 문자열 탐색.
링크: LeetCode 392


Problem 9: Minimum Moves to Equal Array Elements (LeetCode 453)

설명: 배열의 모든 요소를 같게 만들기 위해 필요한 최소 이동 횟수를 계산하는 문제입니다.
핵심 개념: 그리디 알고리즘, 수학적 접근.
링크: LeetCode 453


Problem 10: Valid Parenthesis String (LeetCode 678)

설명: 주어진 괄호 문자열이 유효한지 확인하는 문제로, '*' 문자는 '(' 또는 ')' 또는 빈 문자열로 간주될 수 있습니다.
핵심 개념: 그리디 알고리즘, 스택.
링크: LeetCode 678

Problem 11: Meeting Rooms (LeetCode 252)

설명: 주어진 회의 일정이 겹치지 않도록 배정할 수 있는지 확인합니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 252

Problem 12: Largest Perimeter Triangle (LeetCode 976)

설명: 주어진 배열에서 세 숫자를 사용해 만들 수 있는 가장 큰 삼각형의 둘레를 계산합니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 976

Problem 13: Walking Robot Simulation (LeetCode 874)

설명: 로봇이 주어진 명령에 따라 움직이며, 최대 거리를 계산하는 문제입니다.
핵심 개념: 그리디 알고리즘, 시뮬레이션.
링크: LeetCode 874

Problem 14: Candy (LeetCode 135)

설명: 각 학생에게 최소한의 사탕을 주되, 조건에 따라 배분해야 하는 문제입니다.
핵심 개념: 그리디 알고리즘, 배열 탐색.
링크: LeetCode 135

Problem 15: Merge Sorted Array (LeetCode 88)

설명: 두 정렬된 배열을 병합하는 문제입니다.
핵심 개념: 그리디 알고리즘, 병합.
링크: LeetCode 88

Problem 16: Boats to Save People (LeetCode 881)

설명: 주어진 사람들을 보트에 태워 구출하는 데 필요한 최소 보트 수를 계산합니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 881

Problem 17: Maximize Sum Of Array After K Negations (LeetCode 1005)

설명: 배열의 요소를 최대 K번 부호를 바꿔 합을 최대로 만듭니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 1005

Problem 18: Min Cost Climbing Stairs (LeetCode 746)

설명: 계단을 오르는 데 드는 최소 비용을 계산합니다.
핵심 개념: 그리디 알고리즘, 동적 계획법.
링크: LeetCode 746

Problem 19: Queue Reconstruction by Height (LeetCode 406)

설명: 주어진 사람들의 키와 대기열 조건에 따라 대기열을 재구성합니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 406

Problem 20: Wiggle Subsequence (LeetCode 376)

설명: 주어진 배열에서 인접한 수들의 차이가 교대로 증가와 감소하는 가장 긴 부분 수열의 길이를 계산합니다.
핵심 개념: 그리디 알고리즘, 동적 계획법.
링크: LeetCode 376


Medium 난이도


Problem 21: Jump Game (LeetCode 55)

설명: 주어진 배열에서 각 위치의 값만큼 점프할 수 있을 때, 배열의 끝에 도달할 수 있는지 확인하는 문제입니다.
핵심 개념: 그리디 알고리즘, 배열 탐색.
링크: LeetCode 55


Problem 22: Gas Station (LeetCode 134)

설명: 원형 도로를 따라 주유소가 있을 때, 모든 주유소를 방문할 수 있는 출발점을 찾는 문제입니다.
핵심 개념: 그리디 알고리즘, 순환 배열.
링크: LeetCode 134


Problem 23: Partition Labels (LeetCode 763)

설명: 문자열을 분할하여 각 문자가 하나의 파티션에만 포함되도록 하는 문제입니다.
핵심 개념: 그리디 알고리즘, 문자열 분할.
링크: LeetCode 763


Problem 24: Task Scheduler (LeetCode 621)

설명: 주어진 작업들과 냉각 시간에 따라 작업을 스케줄링하여 최소 시간을 계산하는 문제입니다.
핵심 개념: 그리디 알고리즘, 우선순위 큐.
링크: LeetCode 621


Problem 25: Non-overlapping Intervals (LeetCode 435)

설명: 주어진 구간들 중에서 겹치지 않도록 제거해야 하는 최소 구간의 수를 찾는 문제입니다.
핵심 개념: 그리디 알고리즘, 구간 스케줄링.
링크: [LeetCode 435](https://leetcode.com/problems/non-overlapping-interval

 

Problem 26: Car Pooling (LeetCode 1094)

설명: 주어진 승차 요청들을 처리하며 차량의 용량을 초과하지 않는지 확인합니다.
핵심 개념: 그리디 알고리즘, 스위핑.
링크: LeetCode 1094

Problem 27: Valid Parenthesis String (LeetCode 678)

설명: 괄호 문자열이 유효한지 확인하며, '*'는 빈 문자열, '(' 또는 ')'로 간주될 수 있습니다.
핵심 개념: 그리디 알고리즘, 스택.
링크: LeetCode 678

Problem 28: Score of Parentheses (LeetCode 856)

설명: 올바른 괄호 문자열의 점수를 계산합니다.
핵심 개념: 그리디 알고리즘, 스택.
링크: LeetCode 856

Problem 29: Minimum Number of Arrows to Burst Balloons (LeetCode 452)

설명: 주어진 풍선을 터뜨리기 위한 최소 화살 수를 계산합니다.
핵심 개념: 그리디 알고리즘, 구간 스케줄링.
링크: LeetCode 452

Problem 30: Minimum Operations to Make Array Equal (LeetCode 1551)

설명: 배열의 요소를 동일하게 만들기 위해 필요한 최소 연산 횟수를 계산합니다.
핵심 개념: 그리디 알고리즘, 수학적 접근.
링크: LeetCode 1551

Problem 31: Meeting Rooms II (LeetCode 253)

설명: 필요한 최소 회의실 수를 계산합니다.
핵심 개념: 그리디 알고리즘, 스위핑, 정렬.
링크: LeetCode 253

Problem 32: Candy (LeetCode 135)

설명: 학생들에게 공정하게 사탕을 나눠주는 최소 수를 계산합니다.
핵심 개념: 그리디 알고리즘, 배열 탐색.
링크: LeetCode 135

Problem 33: Largest Number (LeetCode 179)

설명: 주어진 정수를 배열로 취급하여 가장 큰 숫자를 만드는 문제입니다.
핵심 개념: 그리디 알고리즘, 정렬.
링크: LeetCode 179

Problem 34: Monotone Increasing Digits (LeetCode 738)

설명: 주어진 숫자의 각 자리가 증가하는 숫자 중 가장 큰 숫자를 찾습니다.
핵심 개념: 그리디 알고리즘, 수학적 접근.
링크: LeetCode 738

Problem 35: Remove K Digits (LeetCode 402)

설명: 주어진 숫자에서 K개의 숫자를 제거하여 가장 작은 숫자를 만드는 문제입니다.
핵심 개념: 그리디 알고리즘, 스택.
링크: LeetCode 402