이게 어디서 틀린거지..,,, 하면서 한참 골머리를 썩인 문제..
우선 풀이코드부터 올려본다.
from sys import stdin
cases = int(stdin.readline().strip())
# lst = []
for _ in range(cases):
N,M = map(int,stdin.readline().strip().split())
docu = tuple(map(int,stdin.readline().strip().split()))
target = sorted({i for i in set(docu) if i>=docu[M]},reverse=True)
# target = tuple({i for i in set(docu) if i >= docu[M])
orders = [None]*N
order = 1
last = 0
tmp = 0
for i in target:
for j in range(last,N):
if docu[j] == i:
orders[j] = order
order += 1
tmp = j
# print(orders)
for j in range(0,last):
if docu[j] == i:
orders[j] = order
order += 1
tmp = j
# print(orders)
last = tmp
print(orders[M])
전체적인 코드는 맞았지만 결론적으로 틀린 부분은 set
이 자동 정렬이 된다고 생각했던 내 잘못이었다..
이 특징을 간단히 검색해서 정리해보려 했는데 이에 대한 설명이 없는 관계로 추후 찾아서 짧게 포스팅을 해볼 예정이다.
x = [1,3,4,6,2]
print({i for i in x if i>1}) # output : {2, 3, 4, 6}
y = [9,9,6]
print({i for i in y if i>5}) # output : {9, 6}
print({9,6}) # output : {9, 6}
print({1,2,3,4,9,6}) # output : {1, 2, 3, 4, 6, 9}