Skip to content

JYP / 3월 4주차 / 3문제#9

Merged
Kojungbeom merged 3 commits intoAlgorithmStudy-Allumbus:mainfrom
JYP0824:main
Mar 24, 2024
Merged

JYP / 3월 4주차 / 3문제#9
Kojungbeom merged 3 commits intoAlgorithmStudy-Allumbus:mainfrom
JYP0824:main

Conversation

@JYP0824
Copy link
Contributor

@JYP0824 JYP0824 commented Mar 24, 2024

문제 풀이

큐 2: 큐 기능을 직접 구현하는 문제

  1. sys로 명령 수를 받은 뒤, deque를 통해 비어 있는 큐를 생성한다
  2. 기능에 대한 설명은 문제에 명시되어 있어 먼저 기능부터 구현하였다 (push, pop, size, empty, front, back)
  3. 이후 입력된 명령 수인 a 만큼 입력 b를 받으며 for문 반복
import sys
from collections import deque

a = int(sys.stdin.readline())
deq = deque()
for _ in range(a):
    b = sys.stdin.readline().split()

    # deq에 추가
    if b[0] == 'push':
        deq.append(int(b[1]))
    # 가장 앞의 수 출력
    if b[0] == 'pop':
        if deq:
            print(deq.popleft())
        else:
            print(-1)
    # 큐에 든 정수 개수 출력
    if b[0] == 'size':
        print(len(deq))
    # 비었다면 0, 아니면 1
    if b[0] == 'empty':
        if deq:
            print('0')
        else:
            print('1')
    # 큐의 가장 앞 정수 출력, 정수가 없을 경우 -1 출력
    if b[0] == 'front':
        if deq:
            print(deq[0])
        else:
            print(-1)
    # 큐의 가장 뒤 정수 출력, 없을 경우 -1 출력
    if b[0] == 'back':
        if deq:
            print(deq[-1])
        else:
            print(-1)

카드 2: 마지막 남은 카드 번호 구하는 문제

  1. 먼저 카드의 개수를 불러온 뒤, deque함수를 이용해 빈 큐를 생성한다
  2. 이후, for문을 통해 1부터 a까지의 수(카드 번호)를 큐에 넣는다
  3. 이후 popleft()함수를 사용하여 deq의 길이가 1이 될 때까지 반복

popleft()함수는 collections 모듈에 있는 메서드로 왼쪽에 위치한 가장 첫 요소를 삭제

import sys
from collections import deque

a = int(sys.stdin.readline())
deq = deque()

for i in range(a):
    deq.append(i+1)
# while문을 통해 deq가 1이 될 때까지 가장 위 차드를 버리고, 제일 위 카드를 가장 아래로 옮긴다
while len(deq) > 1:
    deq.popleft()
    deq.append(deq.popleft())

print(deq.pop())

@Kojungbeom
Copy link
Collaborator

LGTM

@Kojungbeom Kojungbeom merged commit ad9f46d into AlgorithmStudy-Allumbus:main Mar 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants