목차
버스
학생들이 버스에 타고 여행을 가려고 합니다.
버스는 승객을 태울 수 있는 무게 제한이 있습니다.
매개변수 weight에 각 학생들의 몸무게 정보가 주어지고, limit에 버스가 태울 수 있는 총 승객 의 무게가 주어지면 버스에 탈 수 있는 최대인원수를 구하여 반환하는 프로그램을 작성하세 요.
제한사항:
• weight의 길이는 100,000을 넘지 않습니다. • 50 <= weight[i] <= 300
• 100 <= limit <= 100,000,000
나의코드
def solution(weight, limit):
answer = 0
weight.sort()
for x in weight:
if limit-x>=0:
limit=limit-x
answer+=1
else:
break
return answer
print(solution([300, 100, 230, 120, 90, 150, 60], 700))
print(solution([50, 90, 70, 120, 300, 200, 150, 180, 190], 1000))
print(solution([70, 90, 100, 80, 60, 75, 73, 85, 120, 110, 200], 800))
print(solution([50, 90, 100, 130, 140, 120, 130, 120, 150, 160, 140, 170], 1000))
print(solution([100, 110, 50, 50, 60, 70, 50, 55, 57], 350))
입력값을 정렬한 이후 작은 값부터 한계무게에서 하나씩 빼지면 cnt 를 하나씩 늘리고 음수가 나올경우 반복문을 종료한다.
정답 코드
def solution(weight, limit):
answer = 0
sumW = 0
weight.sort()
for x in weight:
if sumW + x > limit:
break
sumW += x
answer += 1
return answer
print(solution([300, 100, 230, 120, 90, 150, 60], 700))
print(solution([50, 90, 70, 120, 300, 200, 150, 180, 190], 1000))
print(solution([70, 90, 100, 80, 60, 75, 73, 85, 120, 110, 200], 800))
print(solution([50, 90, 100, 130, 140, 120, 130, 120, 150, 160, 140, 170], 1000))
print(solution([100, 110, 50, 50, 60, 70, 50, 55, 57], 350))
정답코드에서는 굳이 sumW를라는 변수로 제한된 무게를 넘었느지 않넘었는지 확인 하는거 같은데 굳이 필요 없는 변수 같다.
'코딩테스트[파이썬] > 입문자를 위한 코딩테스트 핵심' 카테고리의 다른 글
[다시보기] [그리디] - 선긋기 (0) | 2024.01.23 |
---|---|
[그리디] -최대 사과의 개수 (0) | 2024.01.23 |
[정렬] - 두수의 합 (0) | 2024.01.22 |
[정렬] - 두 수의 차 (0) | 2024.01.22 |
[정렬] -사탕 (0) | 2024.01.22 |