[Python] SW Expert Academy #5658 보물상자 비밀번호

이재원·2024년 4월 23일

Samsung SW Expert Academy

목록 보기
27/34

📚문제: #5658 보물상자 비밀번호(모의 SW 역량테스트)

전체 코드

# 5658. 보물상자 비밀번호

from collections import deque

# 함수
def Kth_PASSWORD(k, n, s, t):
    
    q = n // 4
    
    # 비밀번호가 가능한 케이스
    candidate = []
    
    # q번 반복한다.
    for _ in range(q):
        
        s = list(s)
        
        # 가능한 비밀번호 추가
        for i in range(4):
            
            temp = s[q*i:q*(i+1)]
            candidate.append(''.join(temp))
        
        s = deque(s)
        
        # 숫자를 시계방향으로 하나씩 민다.
        s.appendleft(s.pop())
    
    # 가능한 비밀번호 중복 제거
    candidate = list(set(candidate))
    
    # 크기가 큰 순서대로 정렬한다.
    candidate.sort(reverse=True)
    
    # 답안 출력
    print("#{} {}".format(t, int(candidate[k-1], 16)))
    
# 테스트 케이스 T
T = int(input())

# 테스트 케이스가 주어진다.
for t in range(1, T+1):
    
    # 숫자의 개수 N, 크기 순서 K
    N, K = map(int, input().split())
    
    # 16진수 0~F 숫자가 공백 없이 N개 주어진다. 자료를 다루기 쉽게 DEQUE로 선언한다.
    seq = deque(list(input().rstrip()))
    
    # 함수 실행
    Kth_PASSWORD(K, N, seq, t)

0개의 댓글