개발자 성장 기록/코테

[프로그래머스] 구명보트

으노방 2022. 9. 11. 17:17

1차 풀이
def solution(people, limit):
    answer = 0
    v = []
    people.sort()
    print(people)
    
    for p in people:
        v.append(p)
        if sum(v) == limit:
            v = []
            answer+=1
        elif sum(v) > limit:
            del v[0]
            answer+=1
        else:
            continue
    return answer+1

참혹...

어느 블로그에서 봤는데 del, remove, pop 쓰면 효율성에서 실패 뜬다고 한다.

그리디 문제라서 indexing으로 비교해야 되나 보다....

보트에 최대 2명 탈 수 있는 걸 뒤늦게 봤다...

 

도저히 머리가 안 굴러가서 못 풀겠다...ㅠㅠㅠ

 

참고풀이
def solution(people, limit):
    cnt = 0
    people.sort()
    i = 0
    j = len(people)-1
    while i <= j:
        cnt+=1
        if people[j]+people[i]<=limit:
            i+=1
        j-=1
    return cnt

https://leedakyeong.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B5%AC%EB%AA%85%EB%B3%B4%ED%8A%B8-in-python