99클럽 코테 스터디 14일차 TIL + 오늘의 학습 키워드 : 큐
백준 10845번 _ 큐
import sys
from collections import deque
class Queue:
def __init__(self):
self.queue = deque()
def push(self, x):
self.queue.append(x)
def pop(self):
if self.empty():
return -1
return self.queue.popleft()
def size(self):
return len(self.queue)
def empty(self):
return 1 if len(self.queue) == 0 else 0
def front(self):
if self.empty():
return -1
return self.queue[0]
def back(self):
if self.empty():
return -1
return self.queue[-1]
def main():
input = sys.stdin.read
data = input().splitlines()
n = int(data[0]) # 첫 번째 줄: 명령의 수
q = Queue()
results = []
for i in range(1, n + 1):
command = data[i].split()
if command[0] == "push":
q.push(int(command[1]))
elif command[0] == "pop":
results.append(q.pop())
elif command[0] == "size":
results.append(q.size())
elif command[0] == "empty":
results.append(q.empty())
elif command[0] == "front":
results.append(q.front())
elif command[0] == "back":
results.append(q.back())
# 결과 출력
sys.stdout.write('\n'.join(map(str, results)) + '\n')
if __name__ == "__main__":
main()
설명:
1. Queue 클래스: deque를 사용하여 큐를 구현합니다. deque는 양쪽 끝에서 빠른 append와 pop 연산을 지원합니다.
2. 명령 처리: main 함수에서 입력을 읽고 각 명령을 처리합니다. 명령에 따라 큐의 메서드를 호출하고 결과를 리스트에 저장합니다.
3.결과 출력: 모든 결과를 한 번에 출력하여 성능을 최적화합니다.
1. Queue 클래스
Queue 클래스는 큐의 기본 동작을 구현합니다. 이 클래스는 다음과 같은 메서드를 포함합니다:
1.1 __init__(self)
설명: 큐 객체를 초기화합니다. 내부적으로 deque를 사용하여 큐를 생성합니다.
사용 방법: q = Queue()와 같이 큐 객체를 생성할 때 자동으로 호출됩니다.
1.2 push(self, x)
설명: 정수 x를 큐의 뒤에 추가합니다.
사용 방법: q.push(1)과 같이 호출하여 큐에 정수를 추가합니다.
1.3 pop(self)
설명: 큐의 가장 앞에 있는 정수를 제거하고 그 값을 반환합니다. 큐가 비어있으면 -1을 반환합니다.
사용 방법: result = q.pop()과 같이 호출하여 큐에서 정수를 꺼내고, 결과를 변수에 저장합니다.
1.4 size(self)
설명: 큐에 현재 저장된 정수의 개수를 반환합니다.
사용 방법: count = q.size()와 같이 호출하여 큐의 크기를 확인합니다.
1.5 empty(self)
설명: 큐가 비어있으면 1, 아니면 0을 반환합니다.
사용 방법: is_empty = q.empty()와 같이 호출하여 큐의 비어있음을 확인합니다.
1.6 front(self)
설명: 큐의 가장 앞에 있는 정수를 반환합니다. 큐가 비어있으면 -1을 반환합니다.
사용 방법: front_value = q.front()와 같이 호출하여 큐의 앞쪽 값을 확인합니다.
1.7 back(self)
설명: 큐의 가장 뒤에 있는 정수를 반환합니다. 큐가 비어있으면 -1을 반환합니다.
사용 방법: back_value = q.back()과 같이 호출하여 큐의 뒤쪽 값을 확인합니다.
아래의 코드는 Queue()라는 객체를 생성해서 q에 저장해서, 직접 클래스의 메서드를 접근하는 방식이다.
# 큐 객체 생성
q = Queue()
# 정수 추가
q.push(1) # 큐에 1 추가
q.push(2) # 큐에 2 추가
# 큐의 상태 확인
print(q.front()) # 출력: 1 (큐의 앞)
print(q.back()) # 출력: 2 (큐의 뒤)
print(q.size()) # 출력: 2 (큐의 크기)
print(q.empty()) # 출력: 0 (큐가 비어있지 않음)
# 정수 꺼내기
print(q.pop()) # 출력: 1 (큐에서 1 제거)
print(q.pop()) # 출력: 2 (큐에서 2 제거)
print(q.pop()) # 출력: -1 (큐가 비어있음)
# 큐의 상태 확인
print(q.size()) # 출력: 0 (큐의 크기)
print(q.empty()) # 출력: 1 (큐가 비어있음)
99클럽 코테 스터디 16일차 TIL + 오늘의 학습 키워드 : 스택/큐 (3) | 2024.11.12 |
---|---|
99클럽 코테 스터디 15일차 TIL + 오늘의 학습 키워드 : 스택/큐 (2) | 2024.11.11 |
[챌린지]99클럽 코테 스터디 13일차 TIL + 오늘의 학습 키워드 : 스택 (6) | 2024.11.09 |
99클럽 코테 스터디 12일차 TIL + 오늘의 학습 키워드 : 스택 (1) | 2024.11.08 |
99클럽 코테 스터디 11일차 TIL + 오늘의 학습 키워드 : 스택 (1) | 2024.11.08 |