두 번째 면접을 보고 왔는데 .. 내가 분명 알고있는 지식인데 말로써 설명하려고 하니 진짜 내가 모르는것 마냥... 대답하게되는.. 아닌가.. 나는 모르나..? ㅋㅋㅋㅋㅋ 내 머릿속에서 정리가 안되어있으니 원..
시원시원하게 기술적으로 대답하고 싶은데 그걸 못해서 답답하다..
빅데이터 분석기사 시험 준비하면서 꼼꼼히 데이터 분석 프로세스 같은 이론적인 부분들을 내 언어로 만드는 연습을 해야겠다!
그리하여 오늘 푼 문제..
빡치면 코딩 문제 풀게 되는 변태같은 나...
구명 보트!!!
문제는 다음과 같다.
제한사항
- 무인도에 갇힌 사람은 1명 이상 50,000명 이하입니다.
- 각 사람의 몸무게는 40kg 이상 240kg 이하입니다.
- 구명보트의 무게 제한은 40kg 이상 240kg 이하입니다.
- 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없습니다.
>> 내 접근
people을 sort 해서.. 맨 윗값과 아래값을 더해서 limit가 넘으면 무거운 애 혼자타고
아니면 같이 타고~ 해서 최적 방법을 만들기
def solution(people, limit):
people.sort()
cnt = 0
i = 0
j = len(people)-1
while i <= j:
cnt +=1
if people[j] + people[i] <=limit:
i +=1
j -=1
return cnt
>> deque로 접근해보고자 했다..
from collections import deque
def solution(people, limit):
people.sort()
cnt = 0
deque_p = deque(people)
while deque_p:
left = deque_p.popleft()
right = deque_p.pop()
if left + right > limit:
deque_p.appendleft(left)
cnt +=1
return cnt
근데..
이런 에러 메시지가!
그래서
from collections import deque
def solution(people, limit):
result = 0
deque_people = deque(sorted(people))
while deque_people: # 덱이 빌때까지덱이 빌때까지
left = deque_people.popleft()
if not deque_people: # 빈문자열을 not 으로 돌리면 참이므로 if를 돌릴 수 있다.
return result + 1 # 또한 인원수가 1일수 있으므로
right = deque_people.pop()
if left + right > limit:
deque_people.appendleft(left)
result += 1
return result
deque가 더 이해하긴 쉬운듯?!?!
'코딩 공부 > 프로그래머스' 카테고리의 다른 글
카카오 코테_1 (0) | 2021.05.08 |
---|---|
프로그래머스 _ 프린터 (0) | 2021.03.31 |
프로그래머스 _ 두개 뽑아서 더하기 (0) | 2021.03.12 |
프로그래머스 _ 이상한 문자 만들기 (1) | 2021.03.10 |
프로그래머스 _ 모의고사 (0) | 2021.03.10 |