문제 자체는 간단했으나 16진수를 10진수로 변환하는 과정은 인터넷 서치를 통해 빠르게 알아냈다. 진수간 변환은 외워두는게 좋은 것 같다.
SWEA에서 테스트케이스를 for문을 돌며 수행하므로 전역변수 사용 등에 유의해야 한다. 테스트케이스마다 초기화를 해줘야 하는지 꼭 체크하자.
SWEA에서는 테스트케이스를 파일로 받을수 있도록 스켈레톤 코드를 제공한다. 이에 익숙해지자.
(cf. https://garden1500.tistory.com/8)
# 기본 제공코드는 임의 수정해도 관계 없습니다. 단, 입출력 포맷 주의
# 아래 표준 입출력 예제 필요시 참고하세요.
# 표준 입력 예제
'''
a = int(input()) 정수형 변수 1개 입력 받는 예제
b, c = map(int, input().split()) 정수형 변수 2개 입력 받는 예제
d = float(input()) 실수형 변수 1개 입력 받는 예제
e, f, g = map(float, input().split()) 실수형 변수 3개 입력 받는 예제
h = input() 문자열 변수 1개 입력 받는 예제
'''
# 표준 출력 예제
'''
a, b = 6, 3
c, d, e = 1.0, 2.5, 3.4
f = "ABC"
print(a) 정수형 변수 1개 출력하는 예제
print(b, end = " ") 줄바꿈 하지 않고 정수형 변수와 공백을 출력하는 예제
print(c, d, e) 실수형 변수 3개 출력하는 예제
print(f) 문자열 1개 출력하는 예제
'''
#import sys
'''
아래의 구문은 input.txt 를 read only 형식으로 연 후,
앞으로 표준 입력(키보드) 대신 input.txt 파일로부터 읽어오겠다는 의미의 코드입니다.
여러분이 작성한 코드를 테스트 할 때, 편의를 위해서 input.txt에 입력을 저장한 후,
아래 구문을 이용하면 이후 입력을 수행할 때 표준 입력 대신 파일로부터 입력을 받아올 수 있습니다.
따라서 테스트를 수행할 때에는 아래 주석을 지우고 이 구문을 사용하셔도 좋습니다.
아래 구문을 사용하기 위해서는 import sys가 필요합니다.
단, 채점을 위해 코드를 제출하실 때에는 반드시 아래 구문을 지우거나 주석 처리 하셔야 합니다.
'''
# sys.stdin = open("sample_input.txt", "r")
def hexa_to_decimal(hexa_num):
"""16진수 수를 10진수로 반환"""
return int(hexa_num, base=16)
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
# ///////////////////////////////////////////////////////////////////////////////////
N, K = map(int, input().split())
hexa_nums = input()
hexa_nums += hexa_nums # 최적화 여지 있음
decimal_nums = set()
num_len = N//4 # 한변의 길이
for i in range(0, N):
hexa_num = hexa_nums[i:i+num_len]
decimal_num = hexa_to_decimal(hexa_num)
decimal_nums.add(decimal_num)
ans = sorted(list(decimal_nums), reverse=True)[K-1]
print(f"#{test_case} {ans}")
# ///////////////////////////////////////////////////////////////////////////////////