✅ 입력을 받은 후 4로 나눠서 반복할 범위를 지정한다. 맨 앞 원소를 제거해서 뒤에 넣는 것을 반복하고 n/4만큼 잘라서 str에 추가한 후 answer에 10진수로 바꿔서 추가한다. 중복을 제거한 후 sort시켜 k번째 수를 출력한다.
- for문을 이용하여 n/4만큼 반복을 한다.
- num의 맨 앞을 제거한 후 맨 뒤에 삽입한다.(회전하는 역할)
- num리스트를 반복하면서 처음 원소가 아니고 n/4의 배수가 아니면 str에 추가한다.
- n/4로 나누어 떨어지면 str을 10진수로 변경하여 answer리스트에 추가한다.
- answer리스트를 정렬하고, 중복을 제거한 후 k번째 수를 출력한다.
T = int(input()) for test_case in range(1, T + 1): answer = [] n, k = map(int, input().split()) num = list(input()) for j in range(int(n/4)): str = '' tmp = num[0] del num[0] num.append(tmp) for i in range(n): if i == n-1: str += num[i] answer.append(int('0x'+str,16)) break if i != 0 and i % int(n/4) == 0: answer.append(int('0x'+str,16)) str=num[i] else: str += num[i] answer.sort(reverse=True) answer = list(set(answer)) print('#%d'%test_case,answer[k-1])
✅ input을 받은 후 반복될 만큼 뒤에 더 붙여준다.
n/4만큼 잘라서 arr에 추가한 후 중복을 제거하고 sort하여 출력한다.
T = int(input()) for t in range(1, T + 1): N, K = map(int, input().split()) s = input() s += s[:N // 4 - 1] arr = [] for i in range(N): arr.append(s[i: i + N // 4]) arr = list(set(arr)) arr.sort(reverse=True) print(f"#{t} {int(arr[K - 1], 16)}")