반응형
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
🐍파이썬
def dfs(cnt):
global answer
if cnt == t: #최대 교환횟수에 도달하면
temp = ''.join(num) #문자열 변환
answer = max(answer, temp) #answer와 비교해 더 큰 숫자를 answer변수에 담기(문자열 타입의 숫자도 대소비교 가능)
return #종료
for i in range(len(num)):
for j in range(i+1, len(num)):
#하나씩 교환
num[i], num[j] = num[j], num[i]
temp = ''.join(num)
#get(): visited에 (temp, cnt)라는 key가 존재하지 않으면 1리턴
#방문한 적 있다면 재방문 금지->시간초과 방지
#방문한 적 없다면 방문처리 후 방문
if visited.get((temp, cnt), 1):
visited[(temp, cnt)] = 0
dfs(cnt+1)
#dfs수행이 종료되었다면 다른 경로의 dfs 수행을 위해 num 원상복구
num[i], num[j] = num[j], num[i]
T = int(input())
for test_case in range(1, T + 1):
num, t = input().split()
num = list(num)
t = int(t) #교환횟수
answer = "0" #answer 초기화
visited = {} #방문했는지 확인하는 용도
dfs(0)
print("#{} {}".format(test_case, answer))
반응형
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA|파이썬] 2805. 농작물 수확하기 (D3) (0) | 2023.05.08 |
---|---|
[SWEA|파이썬] 2806. N-Queen (D3) (1) | 2023.05.07 |
[SWEA|파이썬] 1208. [S/W 문제해결 기본] 1일차 - Flatten (D3) (0) | 2023.05.07 |
[SWEA|파이썬] 1206. [S/W 문제해결 기본] 1일차 - View (D3) (0) | 2023.05.06 |
[SWEA|파이썬] 5215. 햄버거 다이어트 (D3) (0) | 2023.04.27 |
[SWEA|파이썬] 16800. 구구단 걷기 (D3) (0) | 2023.04.26 |