반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42885
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 (1차 시도)
그냥 적은 몸무게 순으로 보트를 움직이게 할려고 했는데 이건 다시 생각해보니 안됨....
def solution(people, limit):
people.sort()
print(people)
stack = []
count = 0
for i in people:
if not stack:
stack.append(i)
elif sum(stack) + i <= limit:
stack.append(i)
else:
count += 1
stack.clear()
stack.append(i)
if stack:
count += 1
print(count)
return count
풀이 (2차 시도)
그냥 틀린거같다.
min 과 max로 풀기
# 보트에는 두명만 들어감
# min 과 max 를 정하기
def solution(people, limit):
stack = []
count = 0
people.sort(reverse=True)
minKg = people.pop(len(people)-1)
stack.append(minKg)
for v, i in enumerate(people):
if i + minKg <= limit:
count += 1
stack.clear()
minKg = people.pop(len(people)-1)
else:
count+= 1
if stack:
count+=1
return count
풀이 (3차 시도)
min 과 max를 정하고 stack을 구명보트처럼 사용해서 풀어봤다.
# 보트에는 두명만 들어감
# min 과 max 를 정하기
def solution(people, limit):
stack = []
count = 0
people.sort(reverse=True)
minKg = people.pop(len(people)-1)
stack.append(minKg)
for i, v in enumerate(people):
if v + minKg <= limit:
count += 1
stack.clear()
if i != len(people)-1:
minKg = people.pop(len(people)-1)
stack.append(minKg)
else:
count+= 1
if stack:
count+=1
return count
반응형
'코딩 테스트 > Programmers' 카테고리의 다른 글
[Python] [Level 2] 예상 대진표 (0) | 2022.10.27 |
---|---|
[Python] [Level 2] N개의 최소공배수 (0) | 2022.10.22 |
[Python] [Level 2] 짝지어 제거하기 (0) | 2022.10.16 |
[Python] [Level 2] 영어 끝말잇기 (리스트로 중복 제거하기) (1) | 2022.10.11 |
[Python] [Level 2] 카펫 (루트와 약수를 활용하기) (0) | 2022.10.08 |