1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
우선 실험을 하나 했는데용
from collections import deque
q = deque(enumerate(map(int, input().split())))
a = q.popleft()
q.append(a)
for i, j in q:
print(i,'',j)
하나 더 했습니당
첫번째 시도! 장렬히 실패!
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
for i in range(N):
cnt = 0
n, m = map(int,input().split())
q = deque(enumerate(map(int,input().split())))
arr = []
for a, b in q:
arr.append(b)
while q:
idx, x = q.popleft()
for num in range(x+1, 10):
if num in arr[idx:]:
q.append(temp)
break
else:
cnt += 1
if idx == m:
break
print(cnt+1)
이건 예제조차 안 돌아감!!
두번째 실패!! 장렬히 실패!!
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
for i in range(N):
cnt = 0
n, m = map(int,input().split())
q = list(map(int,input().split()))
s = q[m]
while q:
Max = 0
for j in q:
if j > Max :
Max = j
q.remove(Max)
cnt += 1
if Max == s:
break
print(cnt)
당연함 같은 숫자 여러개 있을 거 고려 1도 안 한 코드임
힝 ㅠ 구글링 돌리러 감니다 😮💨ヽ(*。>Д<)o゜
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
for i in range(N):
cnt = 0
n, m = map(int,input().split())
q = deque(list(map(int,input().split())))
while q:
best = max(q)
front = q.popleft()
m -= 1
if best == front:
cnt += 1
if m < 0:
print(cnt)
break
else:
q.append(front)
if m < 0:
m = len(q) - 1
구글링 하고 왔슴니당~~
엄청난 코드,,발견,,!
여기서 m이 0 이면 내가 궁금한 애가 맨 앞에 있다는 거고
1씩 빼서 계속 순서가 당겨지는 거 표현
최댓값이랑 맨 앞에 있는 값을 담은 변수가 필요한데
맨앞에 값을 pop해서 최댓값이랑 비교해서
-둘이 같으면 cnt 증가, m<0면 내가 궁금한 게 맨앞에 있었다는 거니까 print 해주고 break해주고
-둘이 다르면 다시 맨 뒤로 넣어주고, m<0이면 내가 궁금한 애가 맨앞에 있다가 다시 뒤로 간 거니까 len(q) - 1 로 넹
나는 m을 바꿀 생각을 안 했었는데
저렇게 m에서 1씩 빼면서 당기는 거 표현하고
~(>_<。)\
지금 실은 저렇게 막 도전하다가 졸려서
자고 왔는데 9시간 자는 바람에
좀 비몽사몽이에용
'BOJ' 카테고리의 다른 글
[python] 백준 26267번 - 은?행 털!자 (1) | 2023.02.08 |
---|---|
[python] 백준 1002번 - 터렛 (1) | 2023.02.06 |
[python] 백준 2346번 - 풍선 터뜨리기 (5) | 2023.02.04 |
[python] 백준 1449번 - 수리공 (2) | 2023.02.01 |
[python] 백준 2312번 - 수 복원하기 (1) | 2023.01.31 |
댓글