SWEA 5658 보물상자 비밀번호(with Python)

daeungdaeung·2021년 10월 5일
0
hexa2dec = {
    '0': 0,
    '1': 1,
    '2': 2,
    '3': 3,
    '4': 4,
    '5': 5,
    '6': 6,
    '7': 7,
    '8': 8,
    '9': 9,
    'A': 10,
    'B': 11,
    'C': 12,
    'D': 13,
    'E': 14,
    'F': 15,
}

T = int(input())

for tc in range(1, T+1):
    # N: 숫자 개수, K: K번째로 큰 수
    N, K = map(int, input().split())
    numbers = list(input())

    # 집합으로 저장하자
    candidates = set()

    # 각 변 숫자를 문자로 바꾸었을 때 길이
    len_number = N//4

    # 사각형을 회전하자.
    # 회전은 숫자의 길이만큼 하면 된다. (사각형을 통째로 회전시키면 동상이기 때문)
    for i in range(len_number):
        for each_num in range(0, N, len_number):
            candidates.add(''.join(numbers[each_num:each_num+len_number]))

        last_elem = numbers.pop()
        numbers = [last_elem] + numbers

    dec_candidates = []
    for elem in candidates:
        dec_cand = 0
        for i in range(len_number):
            dec_cand += hexa2dec[elem[len_number - 1 - i]]*(16**i)
        dec_candidates.append(dec_cand)

    dec_candidates.sort(reverse=True)

    print(f'#{tc} {dec_candidates[K-1]}')
profile
개발자가 되고싶읍니다...

0개의 댓글