그리디 알고리즘 74

백준(Python) 2839번 설탕 배달 풀이

Python으로 구현한 2839번 설탕 배달 문제 풀이입니다. https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net n = int(input()) result = 0 while n >= 0 : if n % 5 == 0 : result += (n // 5) print(result) break n -= 3 result += 1 else : print(-1) 입력받은 수가 5의 배수라면 변수 result에 n을 5로 나눈 몫을 누적하고 최종 result 값을 출력한..

[그리디] 이코테 (파이썬) 볼링공 고르기 풀이

[문제] A, B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다. 예를 들어 N이 5이고, M이 3이며 각각의 무게가 차례대로 1, 3, 2, 3, 2일 때 각 공의 번호가 차례대로 1번부터 5번까지 부여됩니다. 이때 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같습니다. (1번, 2번), (1번, 3번), (1번, 4번), (1번, 5번), (2번, 3번), (2번, 5번), (3번, 4번), (4번, 5번..

[그리디] 이코테 (파이썬) 문자열 뒤집기 풀이

[문제] 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있습니다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 합니다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것입니다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미합니다. 예를 들어 S = 0001100일 때는 다음과 같습니다. 1. 전체를 뒤집으면 1110011이 됩니다. 2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 두 번 만에 모두 같은 숫자로 만들 수 있습니다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있습니다. 문자열 S가 주어졌을 때, 다솜이가 해야 하는 ..

[그리디] 이코테 (파이썬) 만들 수 없는 금액 풀이

[문제] 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 예를 들어, N = 5 이고, 각 동전이 각각 3원, 2원, 1원, 1원, 9원짜리(화폐 단위) 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 8원입니다. 또 다른 예시로, N = 3이고, 각 동전이 각각 3원, 5원, 7원짜리(화폐 단위_ 동전이라고 가정합시다. 이때 동빈이가 만들 수 없는 양의 정수 금액 중 최솟값은 1원입니다. [입력 조건] 1. 첫째 줄에는 동전의 개수를 나타내는 양의 정수 N이 주어집니다. (1

백준(C) 2720번 세탁소 사장 동혁 풀이

C로 구현한 2720번 세탁소 사장 동혁 문제 풀이입니다. https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net #include int main() { int t, arr[]={25, 10, 5, 1}, count[4] = {0,}; int c; scanf("%d", &t); for(int i=0; i

백준(C) 10162번 전자레인지 풀이

C로 구현한 10162번 전자레인지 문제 풀이입니다. https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net #include int main() { int t, arr[] = {300, 60, 10}, count[3] = {0,}; scanf("%d", &t); if (t % 10 == 0) { for(int i=0; i=arr[i]) { t -= arr[i]; count[i] ++; } if(t == 0) { break; } } for (i..

백준(C) 14659번 한조서열정리하고옴ㅋㅋ 풀이

C로 구현한 14659번 한조서열정리하고옴ㅋㅋ 문제 풀이입니다. https://www.acmicpc.net/problem/14659 14659번: 한조서열정리하고옴ㅋㅋ 첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이 www.acmicpc.net #include int main() { int arr[100001] = {0,}; int n, max = 0, result = 0; scanf("%d", &n); for(int i=0; i max) { max = result; } result = 0; } printf("%d", max); } 최..

백준(C) 2437번 저울 풀이

C로 구현한 2437번 저울 문제 풀이입니다. https://www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net #include int main() { int n, temp, target=1; int input[1001]; scanf("%d", &n); for(int i=0; i

백준(C) 2217번 로프 풀이

C로 구현한 2217번 로프 문제 풀이입니다. https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net #include #include int compare(const void* first, const void* second) { if(*(int*)first *(int*)second) return 1; else return 0; } int main() {..

백준(C++) 2217번 로프 풀이

C++로 구현한 2217번 로프 문제 풀이입니다. https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net #include #include using namespace std; int main() { int n, w[100001], max=0; scanf("%d", &n); for(int i=0; i