250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 구름톤
- 유학
- 사업계획대회
- 구름톤 4기
- 기획 취업
- AI 기획
- 기획자
- PO
- 기업 분석
- pm
- 기획자 취업
- 창업
- 소프티어 서비스기획
- THU
- 스타트업
- 발표
- 파이썬
- AI
- 기획
- 구름톤 후기
- deque
- 소프티어부트캠프
- 구름톤 대상
- 해커톤
- 생성형 AI
- 독일
- IT 기획
- 재귀 알고리즘
- 파이썬 큐
- 소프티어
Archives
- Today
- Total
job다한 공부
자료구조-큐 구현/백준 10845번-파이썬(python) 본문
728x90
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
1.리스트 이용해 구현-deque를 활용하기 전에 리스트를 활용하면서 큐의 개념을 이해하고 싶었다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# -*- coding: utf-8 -*-
"""
Created on Mon Sep 26 13:57:41 2022
@author: jeeni
"""
import sys
#큐 구현하기-하나의 배열이라고 생각해보자
global que #큐 리스트를 전역변수로 설정
que=[]
#정수 x를 큐에 넣는 함수
def push(x):
que.append(x)
return
#큐에서 가장 앞에 있는 정수 빼고 그 수 출력 정수 없을 시 -1
def pop():
a=-1
for i in range(len(que)):
if que[i]:
a=i
break
if a==-1:
print("-1")
else:
print(que.pop(a))
return
#큐에 들어있는 정수의 개수 출력
def size():
cnt=0
for i in range(len(que)):
if que[i]:
cnt+=1
print(cnt)
return
#큐가 비어있는가
def empty():
if que:
print("0") #큐가 값이 있으면
else:
print("1") #비어있을 때
return
#큐의 가장 앞에 있는 정수 출력.없으면 -1
def front():
for i in range(len(que)):
if que[i]:
print(que[i])
return
print("-1") #값없으면 -1출력
return
#큐의 가장 뒤에 있는 정수 출력.없으면 -1
def back():
if que:
print(que[len(que)-1])
else:
print("-1")
return
n=int(input())
a=[]
for i in range(n):
a=sys.stdin.readline().split()
if "push" in a[0]:
push(int(a[1]))
elif a[0]=="pop":
pop() #매개 변수 없는 함수 사용시
elif a[0]=="size":
size()
elif a[0]=="empty":
empty()
elif a[0]=="front":
front()
elif a[0]=="back":
back()
|
cs |
-각각의 기능을 함수로 만들어 꺼내 쓸 수 있도록 했다.
-input은 시간초과가 떠서 a라는 배열에 하나씩 저장한 후에 값을 꺼내 쓰도록 했다.
-더 효율적이고 큐의 개념을 나타내는 코드를 만드려면..front 값을 일일히 검사할게 아니라 처음에 front값을 0으로 저장해주고 pop할 때 위치를 조정해준다. 그리고 front값==back값이면 empty이다.
2.deque를 활용한 풀이
1
2
3
4
5
6
|
from collections import deque
que=deque()
que.append() #요소 추가
que.popleft() #가장 앞쪽 값 삭제
|
cs |
-collections모듈에서 제공하는 deque 자료구조를 활용했다. 스택과 큐의 장점을 모두 채택하여 데이터를 넣고 빼는 속도가 리스트 자료형에 비해 효율적이며 queue 라이브러리를 이용하는 것보다 간단.
-주요 기능인 요소 추가와 앞쪽에서 삭제하는 기능을 어떻게 쓰는지 코딩해봤다
728x90
'이것저것 내가 하고 싶어서 하는 공부 > 자료구조와 알고리즘 개념 및 실습' 카테고리의 다른 글
9월 4주차 알고리즘 스터디-스택,큐 (0) | 2022.09.28 |
---|---|
파이썬 deque 공부,백준 10866번:덱-파이썬(python) (0) | 2022.09.28 |
파이썬 deque 정리 (0) | 2022.09.28 |
스택-스택 개념과 백준 스택 구현 (2) | 2022.09.28 |
정렬-버블 정렬 (0) | 2022.09.15 |