본문 바로가기

알고리즘27

백준 2839 - 설탕 배달 (Python) 문제 n kg설탕을 3kg/5kg 봉지에 각각 나눠 담는다. 이때 봉지의 개수가 최소가 되는 경우를 구해야 한다. 설탕이 정확히 나누어떨어지지 않는다면 -1을 출력한다. 코드 n = int(input()) # a: 3kg 봉지 개수 # b: 5kg 봉지 개수 b = n//5 a = n-b*5 while (True): if b == 0 or a % 3 == 0: break b -= 1 a = n-b*5 a = a//3 if a*3+b*5 == n: print(a+b) else: print(-1) 풀이 3kg 봉지보다 5kg봉지에 많이 담아야 당연히 봉지의 수가 더 적을 것이다. 그래서 설탕 총 무게를 5kg로 나누었을 때 몫을 구하고, 그 나머지가 3kg로 나누어떨어지는 경우를 구한다. 나누어떨어지지 않는.. 2022. 5. 8.
백준 10250 - ACM 호텔 (Python) 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모.. 2022. 5. 8.
백준 1193 - 분수찾기 (Python) 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 풀이 n = int(input()) sum = 0 i = 1 while(True): sum += i if sum >= n: break .. 2022. 5. 5.
백준 1712 - 손익분기점 구하기 (Python) 문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌.. 2022. 5. 5.