본문 바로가기

GREEDY5

[백준 3687번] 성냥개비 난이도: 골드 II 문제 링크: https://www.acmicpc.net/problem/3687 3687번: 성냥개비 각 테스트 케이스에 대해서 입력으로 주어진 성냥개비를 모두 사용해서 만들 수 있는 가장 작은 수와 가장 큰 수를 출력한다. 두 숫자는 모두 양수이어야 하고, 숫자는 0으로 시작할 수 없다. www.acmicpc.net 제가 느끼기에 이 문제는 DP와 그리디를 이용하는 부분으로 나뉩니다. 그리디를 이용하는 부분은 최댓값을 구하는 부분으로, 상대적으로 더 쉽습니다. 성냥개비가 짝수개 있을 때는, 모두 1을 만들면 됩니다 (자릿수를 크게 함). 1을 만드는 데 성냥개비가 2개 소모되므로, 총 (성냥개비 개수 / 2)개의 1을 출력합니다. 성냥개비가 홀수개 있을 때는, 맨 앞자리에 7을 출력하.. 2021. 9. 9.
그리디 그리디 (Greedy Method) 알고리즘에 대해 다루어보고자 합니다. Greedy는 한국어로 번역하여 탐욕법, 또는 욕심쟁이 알고리즘이라고도 합니다. 그리디 알고리즘이라고도 하는데, 개인적으로 알고리즘보다는 방법 (method)이 더 어울리는 표현이라고 생각합니다. 이하 '그리디 알고리즘' 이라고 표현을 통일하겠습니다. 그리디 알고리즘은 이름에서 알 수 있듯, 단순하게 탐욕적으로 문제를 해결하는 방법을 의미합니다. 즉, 지금 당장 현재 상황에 가장 좋은 선택지를 고르는 방법을 뜻합니다. 중요한 점은 이 선택이 추후에 미칠 영향에 대해서는 고려하지 않는다는 점입니다. 따라서 최적해를 보장하지는 않습니다. 그리디 알고리즘은 그 의미가 매우 넓습니다. 두루뭉실하게 '현재 가장 좋은 선택지를 고른다'고 뜻이.. 2021. 1. 30.
[백준 1339번] 단어 수학 난이도: 골드 4 문제 링크: www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 백준에서 본 문제는 그리디 알고리즘, 브루트포스 알고리즘, 백트래킹 문제로 분류하고 있습니다. 이 중 백트래킹 문제는 제가 무슨 의미인지 잘 모르기 때문에 (...), 분류 자체를 너무 신경쓰지 않고 풀기로 했습니다. 알파벳 26개 중 최대 10개에, 0~9까지의 값어치를 부여하고, 알파벳을 숫자로 간주하여 계산했을 때의 최댓값을 구하는 문제입니다. 제 접근법은 이러합니다: .. 2020. 11. 6.
[백준 17497번] 계산기 난이도: 골드 2 문제 링크: www.acmicpc.net/problem/17497 17497번: 계산기 첫 번째 줄에 버튼을 누른 횟수 K (0 ≤ K ≤ 99) 를 출력합니다. 누른 횟수를 최소화 하지 않아도 됩니다. 단, 누른 횟수가 99번을 넘으면 안됩니다. 만약 99번 안에 N을 만드는 방법이 존재하지 않는 www.acmicpc.net 백준에서는 이 문제를 greedy method라고 분류해는데, greedy method가 맞는지 개인적으로는 잘 모르겠습니다. 처음에는 greedy method 방법으로 접근했습니다. 현재 값 x에서 곱하기, 빼기, 곱하기, 나누기 연산을 해 보고, 주어진 값 N까지의 절댓값이 가장 작은 방법을 고르는 식으로 했는데, 코드도 100줄 가량으로 길어질 뿐더러 N =.. 2020. 11. 5.
[백준 1202번] 보석 도둑 문제 링크: www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 대표적인 Greedy Method를 이용하는 문제입니다. 제가 접근한 방법은, 가지고 있는 보석을 값이 비싼 순서대로 정렬한다. 비싼 보석부터 차례로 가방에 넣습니다. 더 담을 수 있는 가방이 없으면, 프로그램을 종료하고, 가방에 넣은 보석의 총 값어치를 출력합니다. 이를 위하여 보석의 정보를 기록하기 위하여 형식의 pair라는 타입을 만.. 2020. 10. 12.