프로그래머스 LV2 구명보트

꿈틀이·2023년 1월 31일
0

알고리즘 - 기초

목록 보기
18/21
from collections import deque
from heapq import heappush, heappop, heapify


def solution(people, limit):
    answer = 0
    heap = sorted(people)
    q = deque()
    for i in range(len(people)):
        q.append(heap[i])
    #이거 한 4줄 한 줄 가능 q = deque(sorted(people))    
    
    while True:
        if(len(q) == 1):
            answer += 1
            break
        elif(len(q) == 0):
            break
        
        if(q[0]+ (temp:=q.pop()) > limit ):
            print(temp)
            answer += 1
        else:
            print(q.popleft())
            answer += 1
        
    return answer

1. 투포인터 알고리즘 - 양옆으로 접근을 하기 위해 덱을 선택했으나, 투포인터를 사용해도 가능하다!

문제를 풀 때 좌측 우측에서 동시에 접근하기 위해 덱을 사용했다. 하지만 투포인터라는 기법을 사용해서도 접근이 가능하다!! 대박이다

인덱스를 직접 저장하는 방법 기억하기 메모

투포인터 알고리즘이란,
두 개의 점 위치를 기록하며 처리를 해야할 때

cf) 슬라이딩 윈도우 -> 구간의 길이를 일정하게 둔 채 구간을 훑으며 지나감

cf ) 코드 줄이기 가능한 부분!

heap = sorted(people)
    q = deque()
    for i in range(len(people)):
        q.append(heap[i])
q = deque(sorted(people))

위의 코드 한줄로 줄이기 가능하다!

profile
안녕하세용🤓

0개의 댓글