사용 언어 - Python3
2164번: 큐 2 (실버4, 큐)
문제 ★큐 문제★
정답
deque([]) 문제
(코드 풀이)
1. 시간제한 & queue.popleft()
파이썬 라이브러리 중 collections의 deque로 q를 구현하기
import sys
from collection import deque
n = int(sys.stdin.readline())
q = deque([])
pop 명령어가 입력되었을 때, 큐에서 가장 앞(왼쪽)에 있는 정수를 빼고 출력하기
queue.popleft()
# 정답1 - deque 사용하기
import sys
from collections import deque
n = int(sys.stdin.readline())
q = deque([i for i in range(1,n+1)])
while (len(q)>1):
q.popleft() #제일 위(왼쪽)에 있는 카드 버리기
temp = q.popleft() #두번째 카드 저장하기
q.append(temp)
print(q[0])
2. 규칙을 발견한 다른 정답
다른 분 풀이 중에 좋은 정답이 있었다. 내가 전혀 생각하지 못했던 부분이었다.
output = (input - square//2) * 2
여기서, square 는 2부터 시작해서 while문이 돌아갈때마다 4, 8,16, ... 형태로 늘어난다.
예외 - input이 1,2일 땐 input 값 프린트
# 정답2 - 규칙발견
input = int(input())
square = 2
while True:
if (input == 1 or input == 2):
print(input)
break
square *= 2
if (square >= input):
print((input - (square // 2)) * 2)
break
레퍼런스
- 정답 참고
- 정답 깃허브
'Algorithm > 스택&큐&덱&힙' 카테고리의 다른 글
[백준] 1966번 프린터 큐 (0) | 2023.01.22 |
---|---|
[백준] 11866번 요세푸스 문제0 (1) | 2023.01.22 |
[백준] 18258번 큐 2 (0) | 2023.01.21 |
[백준] 1874번 스택 수열 (0) | 2023.01.20 |
[백준] 9012번 괄호 (0) | 2023.01.20 |
댓글