greedy 7

프로그래머스(Python) 42885번 구명보트 풀이

Python으로 구현한 42885번 구명보트 문제 풀이입니다. https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr from collections import deque def solution(people, limit) : answer = 0 people.sort() people = deque(people) while people : if len(people) == 1 : answer +..

프로그래머스(Python) 42883번 큰 수 만들기 풀이

Python으로 구현한 42883번 큰 수 만들기 문제 풀이입니다. https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr def solution(number, k) : stack = [number[0]] for num in number[1:] : # stack과 k가 0보다 크고, stack의 마지막 요소가 num보다 작을 경우 반복 while len(stack) > 0 and k > 0 and stack[-1] 0 : stack = stack[:-k] return ''.join(stack) 1. n..

프로그래머스(Python) Level.1 체육복 풀이

Python으로 구현한 42862번 체육복 문제 풀이입니다. https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr def solution(n, lost, reserve): lost_update = list(set(lost) - set(reserve)) reserve_update = list(set(reserve) - set(lost)) answer = n - len(lost_update) for i in lost_u..

백준(C) 11047번 동전 0 풀이

C로 구현한 11047번 동전 0 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net #include int main() { int n, k, result=0; int stat[11]; scanf("%d %d", &n, &k); for(int i=n-1; i>=0; i--) { scanf("%d", &stat[i]); } for(int i=0; i

백준(C) 5585번 거스름돈 풀이

C로 구현한 5585번 거스름돈 구하기 문제 풀이입니다. https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net #include int main() { int input, money, result=0; scanf("%d", &input); money = 1000 - input; result += money / 500; money %= 500; result += money / 100; money %= 100; result += mo..

그리디 알고리즘(Greedy Algorithm)

그리디 알고리즘은 매 선택에서 당장 눈 앞에 보이는 최적인 답을 선택하도록 하는 알고리즘이다. 대표적인 예제로는 거스름 돈 문제가 있다. 예를들어, 거스름 돈 1260원을 내주어야할 때 10원짜리 동전을 126개 내어주는 것보다는 500원짜리 동전 2개, 100원짜리 동전 2개, 50원짜리 동전 1개, 10원짜리 동전 1개로 총 6개의 동전을 내어주는 것이 더욱 편리하다. 그러므로 그리디 알고리즘은 무조건 큰 경우 혹은 무조건 작은 경우대로 문제에 접근하여 수행된다. [예제] #include int main() { int input, result = 0; scanf("%d", &input); result += input / 500; input %= 500; result += input / 100; inp..