본문 바로가기
코딩테스트/코딩 테스트 합격자 되기(파이썬편)

[코딩테스트] 큐

by cogito21_python 2024. 7. 5.
반응형

- FIFO(First In First Out): 먼저 들어간 데이터가 먼저 나오는 구조

- 작업 대기열이나 이벤트 처리에 사용

 

ADT

class Queue:
	def __init__(self, size:int =10):
    	self.data = [None for _ in range(size)]
        self.front = -1
        self.rear = -1
        self.size = size
        
    def isEmpty(self): -> bool
        if self.front == self.rear
            return True
        else:
            return False
            
    def isFull(self): -> bool
        diff = self.rear - self.front
        if diff < 0:
            diff = self.size - abs(diff) + 1
        else:
            diff += 1
        
        if diff == self.size:
            return True
        else:
            return False
            
    def push(self, data): -> None
        if not self.isFull():
            self.rear += 1
            if self.rear == self.size:
                self.rear = 0
            self.data[self.rear] = data
        return None
        
    def pop(self): -> int|None
        data = None
    	if not isEmpty():
            self.front += 1
            if self.front == self.size:
                self.front = 0
            data = self.data[self.front]
            self.data[self.front] = None
        return data

 

코딩테스트 라이브러리

from collections import deque

# 덱 생성
queue = deque()
# 맨 뒤 추가/삭제
queue.append(val)
queue.pop()
# 맨 앞 추가/삭제
queue.appendleft(val)
queue.popleft()

문제 추천

- 기능 개발(Lv2)

- 카드 뭉치(Lv1)

+) 

- 다리를 지나는 트럭(Lv2)


기능 개발

 

카드 뭉치

def solution(cards1, cards2, goal):
    answer = ''
    cnt = 0
    j, k = 0, 0
    for i in range(len(goal)):
        if (j < len(cards1)) and (goal[i] == cards1[j]):
            cnt += 1
            j += 1
        elif (k < len(cards2)) and (goal[i] == cards2[k]):
            cnt += 1
            k += 1
        else:
            break

    if cnt == len(goal):
        answer = "Yes"
    else:
        answer = "No"
    
    return answer

다리를 지나는 트럭

반응형