목록BOJ_백준/그리디 (3)
haju__log
https://www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net ✅ 문제풀이 아래 그림을 보면서 문제를 해석해보자. 예제 1에서는 연속 8일 중 5일을 선택해야하는데, 총 20일이므로, 8일 / 8일 / 나머지 4일로 쪼개서 볼 수 있다. 그러면 두 번의 8일에서는 두 번 다 5일을 사용할 수 있고, 마지막 4일에서는 5일보다 작으므로 4일 모두 사용할 수 있다. 예제 2에서는 총 17일이므로, 8일 / 8일 / 나머지 1일로 쪼개서 볼 수 있다. 위와 ..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net ✅ 문제 풀이 조건문 분기를 어떻게 해줄지 고민을 꽤 한 문제이다. 일단 5의 배수이면 바로 n//5의 값을 result에 저장한 후 while문 종료한다. 5의 배수가 아니면 3을 계속해서 줄여나가면서 0이 될 때까지 반복한다. (3을 빼주면 result값을 하나씩 증가해줘야함, 설탕 3kg짜리를 하나씩 배달하는 경우이므로) 마지막 조건에 걸리는 게 그냥 여기서 코드를 마무리하면 예제로 4가 들어올 경우 ..
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net ✅ 문제 풀이 돈 인출할 시간의 합을 최소로 만들기 위해서는 각 사람들이 돈을 인출하는데 필요한 시간을 리스트로 받고, 그 값을 오름차순으로 정렬해서 계산하는 것이 최솟값을 가지게 된다. import sys n=int(sys.stdin.readline()) l=list(map(int,sys.stdin.readline().split())) t=[] l.sort() for i in range(n): tmp=0 for j in ra..