본문 바로가기

전체 글

(171)
[프로그래머스][Python] 구명보트 문제를 정리해보자. 구명보트를 이용해 모두를 탈출시켜야 한다. 구명보트에는 최대 2명이 탑승한다. 탑승자의 무게 합이 제한을 초과하면 안 된다. 모든 사람을 구출하는 데 필요한 구명보트의 최솟값을 구해야 한다. 풀이를 생각해보자. 1. 두 사람이 타는 경우 (가장 무거운 사람 + 가장 가벼운 사람)이 무게 제한을 초과하지 않으면 둘 다 태운다. 한 번 태운 사람은 두 번 다시 태우지 않는다. 2. 한 사람이 타는 경우 (가장 무거운 사람 + 가장 가벼운 사람)이 무게 제한을 초과한다면, 가장 무거운 사람만 태운다. 3. 마지막 사람 50은 70, 80이 나갔기 때문에 배열에 혼자 남겨졌다. 따라서 가장 무거운 사람도 아니고, 가장 가벼운 사람도 아니다. 이 경우는 '마지막 사람'이라고 생각한다. 그냥 내..
[대회][BOJ][INU 코드페스티벌 2021] C번 23843 : 콘센트 문제를 정리해보자. 1. N개의 전자기기를 충전해야 한다. 2. M개의 사용 가능한 콘센트가 있다. 전자기기 1개당 콘센트 1개가 필요하다. 그리고 전자기기마다 충전에 필요한 시간, T가 주어진다. 모든 전자기기를 충전하기 위한 최소 시간을 구해야 한다. 풀이를 생각해보자. 이 문제는 '최소 대기시간으로 충전해서 가져가는 최대 인원'을 구하는 게 아니라, '모든 기기를 충전하는 최소 시간'을 구하는 것이다. 문제의 예시로 전자와 후자를 비교해보자. 전자는 13시간이 걸리고, 후자는 9시간이 걸린다. 따라서 충전이 오래 걸리는 기기부터 충전해야 한다. 정리해보면, 넣을 때는 충전이 가장 오래 걸리는 기기를 넣는다. 그리고 콘센트 누적 충전 시간에 현재 기기 충전 시간을 더한다. (처음에는 0이다.) 그다음..
[대회][BOJ][INU 코드페스티벌 2021] B번 23842 : 성냥개비 문제를 정리해보자. 성냥개비를 이용해서 '올바른 수식'을 만들어야 한다. 올바른 수식이 되는 조건은 아래와 같다. 1. @@+@@=@@ 형태를 만족해야 한다. (모든 수는 항상 두 자릿수로 표현해야 한다. 예를 들면, 27은 27이다. 5는 05이다.) 2. N개의 성냥개비가 주어진다. 모두 사용해야 한다. (+와 =에도 각각 2개의 성냥개비가 필요하다.) 풀이를 생각해보자. 모든 경우의 수를 따져보면 된다. (0+0=0부터 99+99=99까지 완전 탐색한다.) 그리고 경우마다, 1. 수식이 성립하는가? 2. 수식이 N개의 성냥개비를 사용하는가? 를 따진다. 1, 2를 모두 만족하면 올바른 수식이다. 구현해보자. 숫자마다 사용되는 성냥개비 개수는 아래와 같다. 0은 6개 1은 2개 2는 5개 3은 5개 ..