문제
https://school.programmers.co.kr/learn/courses/30/lessons/42885
- 2명이서 갈수있는 사람들을 제거하고 -> 나머지는 1인 1보트로 count
- 젤 가벼운 사람부터 -> 무거운 순으로 짝을 매칭
내 풀이 - 정확성 통과 / 시간초과 3개
- 이유 : 경우의 수만 구하면되기 때문에, 굳이 스택에서 pop으로 원소를 제거하지 않아도되는데, 굳이 제거해서 시간이 더 들었다.
def solution(people, limit):
answer = 0
people.sort(reverse=True)
while people:
k = 0
while k - len(people) < -1:
if people[-1] + people[k] <= limit:
people.pop()
people.pop(k)
answer += 1
break
else:
k += 1
else:
break
#짝이 없으면 혼자 보트탐
return answer + len(people)
수정한 풀이
- 두 포인터 이용 - 쌍이 매칭되면 시작점과 끝점을 줄여서 다시 시작하면 됨 = pop을 안써도된다
def solution(people, limit):
answer = 0
people.sort()
s = 0
e = len(people) - 1
while s < e:
if people[s] + people[e] <= limit:
answer += 1
s += 1
e -= 1
# answer + (len(people) - 2 * answer)
return len(people) - answer
'개발 > Algorithm' 카테고리의 다른 글
| [프로그래머스/42861/level3/고득점kit] 섬 연결하기 - 최소신장트리, 크루스칼 Kruskal 알고리즘 (0) | 2023.08.22 |
|---|---|
| [프로그래머스/42862/level1/고득점kit] 체육복 - 그리디 (0) | 2023.08.14 |
| [프로그래머스/42860/level2/고득점kit] 조이스틱 - 그리디 (0) | 2023.08.12 |
| [프로그래머스/84512/level2/고득점kit] 모음사전 - 완전탐색, 중복순열 product (0) | 2023.08.10 |
| [프로그래머스/86971/level2/고득점kit] 전력망을 둘로 나누기 - 완전탐색, BFS (0) | 2023.08.10 |