19939번: 박 터뜨리기 $N$개의 공을 $K$개의 바구니에 문제의 규칙을 만족하면서 나눠 담을 수 있다면, 가장 많이 담긴 바구니와 가장 적게 담긴 바구니의 공의 개수 차이를 출력한다. 나눠 담을 수 없는 경우에는 -1을 www.acmicpc.net 1. 문제 내용 2. 접근 방식 나눠 담을 수 없는 경우는 언제인가? 문제를 쪼개서 접근하고자 먼저 답을 도출할 수 없는 상황을 고민하였다. 예를 들어 k = 3이라면, 공은 최소 3 + 2 + 1 = 6개는 있어야 한다. 따라서 k + (k - 1) + (k - 2) + ... + 1보다 n이 작을 때는 정답을 구할 수 없다. 답을 구할 수 있을 때는, 규칙이 무엇인가? n = 10, k = 4 ▶ 1, 2, 3, 4 (3) n = 11, k = 4 ▶..
1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 1. 문제 내용 2. 접근 방식 많은 팁을 주려는 손님을 먼저 받자 많은 팁을 주려는 손님의 등수를 높임으로써 팁에서 마이너스 되는 값을 줄이면 팁의 최대값을 구할 수 있다. 따라서 입력 받은 팁을 내림차순 정렬한 후, 순서대로 손님을 받으면 된다. 3. 정답 코드 import sys input = sys.stdin.readline n = int(input()) data = [int(input()) for _ in range(n)] data.s..
11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 1. 문제 내용 2. 접근 방식 최대한 높은 가격을 무료로 지불하자. 세 개로 모은 가격 중에서 가장 적은 가격이, 나머지 제품들보다 비싸면 이득이다. 즉, 입력 받은 제품의 가격을 내림차순 정렬한 후에 3개씩 짝 지으면 된다. 예를 들어 10, 9, 6, 4, 3, 2가 있을 때 (10, 9, 6)과 (4, 3, 2)로 그룹을 나누면, 첫 번째 그룹에서 가장 작은 가격인 6이 두 번째 그룹에 속한 제품의 가격들보다 비싸므로, 구매 비용이 절약된다. 3..
1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 1. 문제 내용 2. 접근 방식 각 패키지 가격과 낱개 가격의 최소값만 신경 쓰면 된다. 최소값을 구해야 하므로, 패키지의 가격의 최소값과 낱개 가격의 최소값만 필요하다. 값을 구하는 방법은 총 3가지 n = 10이고, 패키지 가격의 최소값 p = 20, 낱개 가격의 최소값 q = 4이라고 가정하자. 그럼 총 값을 구하는 방법은 다음과 같다. 패키지 6개로 최대한 구매한 후, 나머지를 낱개로 구매하는 경우 n // 6 * p + n % 6 * q = 10 /..