일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 투포인터
- TS
- RTK Query
- dfs
- 타입 좁히기
- tailwind
- 태그된 유니온
- app router
- React
- webpack
- useAppDispatch
- autosize
- 무한 스크롤
- Cypress
- 호이스팅
- CORS
- Jest
- recoil
- ESlint
- SSR
- 리터럴 타입
- 공변성
- 반공변성
- 결정 알고리즘
- 이분 검색
- map
- Promise
- 인터섹션
- CI/CD
- async/await
Archives
- Today
- Total
짧은코딩
1966 프린터 큐 본문
반응형
https://www.acmicpc.net/problem/1966
내 풀이(맞음)
from collections import deque
t = int(input())
rst = []
for i in range(t):
ary = deque()
n, m = map(int, input().split())
x = input().split()
for j in range(n):
ary.append([])
ary[j].append(int(x[j]))
ary[j].append(j)
sam = ary[m][1]#찾으려는 값의 처음 순서
count = 1
while(True):
a = max(ary)[0]#현재의 최고 우선순위 값
if a == ary[0][0] and ary[0][1] == m:
rst.append(count)
break
elif a == ary[0][0] and ary[0][1] != m:
ary.popleft()
count += 1
elif a == ary[0][0]:
if max(ary)[1] == m:
rst.append(count)
break
ary.popleft()
count += 1
else:
tmp = ary.popleft()
ary.append(tmp)
for i in rst:
print(i)
t에 전체 테스트 개수를 입력한다. 그리고 ary에 덱을 만들고 n, m, x를 입력한다. 그러고 ary에 (우선 순위, 처음 위치 값)을 저장한다. 그리고 sam에 찾으려는 값의 처음 순서를 저장한다. count는 출력할때마다 하나씩 올라간다. while문에서는 a에 현재의 최고 순위 값을 넣는다. 그리고 조건문 4가지를 만든다. 첫번째 조건문은 현재 최고 우선 순위 값이 맨 처음 값과 같고 처음 순서도 m과 같으면 rst에 몇번째로 출력되었는지 넣고 break한다. 두번째 조건문은 현재 최고 우선 순위 값이 맨 처음 값과 같지만 처음 순서가 m이랑 다르면 출력을 해주고 count에 1을 추가한다. 세번째 조건문은 현재 최고 우선 순위가 맨 처음 값과 같고 현재 최고 우선 순위 값의 처음 순서가 m이랑 같으면 rst에 count 값을 추가한다. 하지만 처음 순서가 m이랑 다르면 출력을 하고 count를 올리고 다음 반복문으로 넘어간다. 마지막 조건문은 출력하지 못하는 경우이다. 그러면 맨 앞걸 삭제하고 맨 뒤로 보내준다.
반응형
'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글
1874 스택 수열 (0) | 2022.02.25 |
---|---|
1764 듣보잡 (0) | 2022.02.23 |
10816 숫자 카드 2 (0) | 2022.02.22 |
1158 요세푸스 문제 (0) | 2022.02.19 |
11279 최대 힙 (0) | 2022.02.14 |
Comments