https://www.acmicpc.net/problem/1158
import sys
input = sys.stdin.readline
n,k = map(int,input().split())
arr = [i for i in range(1,n+1)]
answer = []
num = 0
for t in range(n):
num += k-1
if num >= len(arr):
num = num%len(arr)
answer.append(str(arr.pop(num)))
print("<"+", ".join(answer)[:]+">")
인덱스를 잘 고려해주어야 하는 문제였다.
그리고 출력형식도 잘 맞춰주고..
https://www.acmicpc.net/problem/1966
from collections import deque
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n, m = map(int,input().split())
priority = list(map(int,input().split()))
q1 = deque() #값을 넣음
q2 = deque() #인덱스를 넣음
for i in range(len(priority)):
q1.append(priority[i])
q2.append(i)
count=1
while True:
#첫번째 애가 최대
if q1[0]==max(q1):
if q2[0]==m: #얘가 답이면
print(count)
break
else:
q1.popleft() #아니면 걍 출력
q2.popleft()
count+=1
else:
q1.rotate(-1)
q2.rotate(-1)
#q1.append(q1[0])
#q2.append(q2[0])
#q1.popleft()
#q2.popleft()
rotate함수가 있다는 걸 몰라서 append와 popleft를 사용해서 풀었었다.
m번째 숫자가 출력이 되었는지 확인하기 위한 인덱스 큐를 만들어주었다.
https://www.acmicpc.net/problem/5430
import sys
input = sys.stdin.readline
from collections import deque
t = int(input())
for _ in range(t):
#조건들 입력
ac = input().rstrip()
n = int(input())
s= input().rstrip()
isError=False
if n!=0:
li = deque(s[1:-1].split(","))
else:
li = deque()
rev=0
for i in range(len(ac)):
if ac[i]=="R":
rev+=1
else:
if len(li)<1:
isError=True
print("error")
break
else:
if rev%2==0: #앞에거 뺀다
li.popleft()
else:
li.pop()
if isError is False:
if rev%2==1:
li.reverse()
print('['+','.join(li)+']')
else:
print('['+','.join(li)+']')
조낸 많이 틀렸었다 ㄱ-
처음에는 R표시가 나올 때 마다 reverse를 해주었는데, 이 부분에서 시간초과가 났었다.
그래서 R이 표시된 횟수를 세고 홀수면 뒤집고 짝수면 그대로 두는 방식으로 바꿨다.
두번째는 출력형식이였다.
그냥 list로 바꿔서 그대로 출력하도록 했는데 그 때 틀렸습니다 혹은 런타임에러가 발생했었다....