백준 1966

HJ seo·2022년 8월 19일
0

문제 링크

설명

이게 어디서 틀린거지..,,, 하면서 한참 골머리를 썩인 문제..

우선 풀이코드부터 올려본다.

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}
profile
다양한 분야에 관심이 많은 초보 개발자 입니다.

0개의 댓글