코딩테스트

deque를 쉽고 고급지게 쓰기 + 다각형 넓이 구하기 팁

임지혁코딩 2024. 7. 4. 18:15

이전까지는 deque를 , 단순히 양쪽 pop & push가 가능한 형태로만 썼다.

이를 고급지게 활용해보자

 

1. deque에서의 pop

 

일단, from collections import deque로 선언

deq = deque()로 선언

 

deq.popleft() , deq.popright()로 pop(0), pop()을 변경하자.

#pop은 기본적으론 가장 오른쪽 pop임을 기억하자

 

2. rotate

deq.rotate(-1) # 왼쪽 회전

deq. rotate(1) # 오른쪽 회전

 

이러한 rotate는, 특히나 직접 컨테이너벨트나 숫자등을 구현할 때 쓰인다.

 

#활용 예시

 

백준. 20055

 

import sys
from collections import deque

inputlist = list(map(int,sys.stdin.readline().split()))

N = inputlist[0]
K = inputlist[1]

deq = deque(list(map(int,sys.stdin.readline().split())))

robot = deque([0] * N)
answer = 0

while True:

    answer+=1

    #회전
    deq.rotate(1)
    robot.rotate(1)
    robot[-1] = 0
    
    #2이동
    if sum(robot)> 0:
        for i in range(N-2,-1,-1) :

            if robot[i] == 1 and robot[i+1] == 0 and deq[i+1]>=1 :
                robot[i+1] = 1
                robot[i] = 0
                deq[i+1] -=1

        robot[-1] = 0

    #3
    if robot[0] == 0 and deq[0] >0 :
        robot[0] = 1
        deq[0] -= 1

    #4
    if deq.count(0) >= K :
        break

print(answer)

 

이와 같이, 경우에따라 rotate만으로 문제를 쉽게 해결할 수 있다.

 

 

--추가--

 

다각형 넓이 구하는 tip을 확인하자.

https://ko.wikihow.com/%EB%8B%A4%EA%B0%81%ED%98%95-%EB%84%93%EC%9D%B4-%EA%B5%AC%ED%95%98%EA%B8%B0#:~:text=%EC%A0%95%EB%8B%A4%EA%B0%81%ED%98%95%EC%9D%98%20%EB%84%93%EC%9D%B4%EB%A5%BC%20%EA%B5%AC,%EC%9D%98%20%EC%A4%91%EC%8B%AC%EC%9C%BC%EB%A1%9C%20%EB%AA%A8%EC%9D%B4%EB%8A%94%20%EC%84%A0%EB%B6%84

 

다각형 넓이 구하기: 15 단계 (이미지 포함) - wikiHow

다각형의 넓이를 계산하는 일은 정삼각형 넓이를 구하는 것처럼 간단하기도 하지만 각 변의 길이가 다른 11각형의 넓이를 구하는 것처럼 복잡하기도 합니다. 다양한 다각형의 넓이를 구하는 방

ko.wikihow.com

 

이전에 봤던 코딩테스트에서도, 이러한 문제들이 나온 경우가 있었다. 이 방식을 기억해놓고 잘 사용하자!