처음 풀이
T = int(input()) # 전체 테스트 케이스 수
def function(a, b):
# 일단 리스트에 넣어
line = list(map(int, str(a)))
count = 0
for i in range(len(line)):
if count >= b:
break
mx = max(line[i:])
if line[i] != mx:
max_idx = line.index(mx,i)
line[i], line[max_idx] = line[max_idx], line[i]
count += 1
return ''.join(map(str, line))
for test_case in range(T):
a, b = map(int, input().split())
result = function(a, b)
print(f"#{test_case + 1} {result}")
근데 어차피 시간초과 날 거 같아서 다른 방법으로 풀어야겠다...

수정했는데 이제는 0개가 맞았대
T = int(input()) # 테스트 케이스의 수
for test_case in range(1, T + 1):
N = int(input())
def function(a, b):
line = list(map(int, str(a)))
n = len(line)
b = min(b, n - 1) # 실제 교환할 수 있는 최대 횟수로 조정
for count in range(b):
# 최댓값 찾기
mx = max(line[count:])
mix = line[count:].index(mx) + count
if line[count] != mx:
# 현재 위치와 최댓값이 다르면 교환
line[count], line[mix] = line[mix], line[count]
return ''.join(map(str, line))
for i in range(N):
a, b = map(int, input().split())
result = function(a, b)
print(f"#{i + 1} {result}")
def swap_max_value(num_str, k):
num_list = list(num_str) # 숫자 문자열을 리스트로 변환
n = len(num_list)
for _ in range(k):
i = 0
while i < n - 1:
max_pos = i
# i 이후에서 최대값 찾기
for j in range(i + 1, n):
if num_list[j] > num_list[max_pos]:
max_pos = j
# 최대값이 현재 위치와 다르면 교환
if max_pos != i:
num_list[i], num_list[max_pos] = num_list[max_pos], num_list[i]
i += 1
return ''.join(num_list) # 리스트를 문자열로 변환하여 반환
T = int(input().strip()) # 테스트 케이스 수 입력
for t in range(1, T + 1):
num_str, k = input().split() # 숫자 문자열과 교환 횟수 입력
k = int(k) # 교환 횟수 정수로 변환
result = swap_max_value(num_str, k) # 최대값 계산
print(f"#{t} {result}") # 결과 출력
오답
채점용 input 파일로 채점한 결과 fail 입니다.
(오답 : 15개의 테스트케이스 중 9개가 맞았습니다.)