https://programmers.co.kr/learn/courses/30/lessons/42885
나의코드
def solution(people, limit):
people.sort()
answer = 0
small, big = 0, len(people)-1
while small < big:
if people[small] + people[big] <= limit:
small += 1
big -= 1
else:
big -= 1
answer += 1
if small == big:
answer += 1
return answer
일단 people을 정렬한다.
가장 무거운 사람과 가장 가벼운 사람을 비교해본다. 만약 두 사람의 무게가 limit을 넘어간다면?
가장 무거운 사람은 다른 사람들과는 탈 수 없기 때문에 혼자 탄다고 생각할 수 있다.
big을 1 감소한 것으로 다음 연산에 배제하는 대신 태워 보냈다고 생각하고 answer을 카운트 한다.
만약 무게 제한에 걸리지 않는다면 두 사람을 태워 보냈다고 생각하고 small과 big을 +1, -1 한다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
[1차] 캐시 (코딩테스트, 프로그래머스) (0) | 2022.04.14 |
---|---|
다음 큰 숫자 (프로그래머스, 코딩테스트) (0) | 2022.04.13 |
뉴스 클러스터링 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.26 |
큰 수 만들기 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.24 |
카펫 (코딩테스트, 프로그래머스, 파이썬) (0) | 2022.02.21 |
댓글