반응형
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
🐍파이썬
T = int(input())
for test_case in range(1, T+1):
n = list(input())
min_num, max_num = ''.join(n), ''.join(n)
for i in range(len(n)-1):
for j in range(i+1, len(n)):
if i == 0 and n[j] == "0": #맨앞자리가 0이 될 경우 아래 코드 실행x
continue
n[i], n[j] = n[j], n[i] #위치 바꾸기
min_num = min(min_num, ''.join(n)) #위치를 바꾼 수가 기존 min_num보다 작다면 저장
max_num = max(max_num, ''.join(n)) #위치를 바꾼 수가 기존 max_num보다 크다면 저장
n[i], n[j] = n[j], n[i] #원상복귀
print("#{} {} {}".format(test_case, min_num, max_num))
다른 풀이 방법
itertools의 combinations를 사용하는 방법
from itertools import combinations
T = int(input())
for test_case in range(1, T + 1):
n = list(input())
min_num, max_num = ''.join(n), ''.join(n)
target = [i for i in range(len(n))] #인덱스를 저장
# 순서에 상관없이 2개의 인덱스를 뽑기
for index in combinations(target, 2):
i, j = index
n[i], n[j] = n[j], n[i] #각 인덱스의 수를 교환
if n[0] == '0': #첫째자리 수가 0인 경우
n[i], n[j] = n[j], n[i] #원상복귀
continue #아래 코드 건너뛰기
min_num = min(min_num, ''.join(n))
max_num = max(max_num, ''.join(n))
n[i], n[j] = n[j], n[i]
print("#{} {} {}".format(test_case, min_num, max_num))
반응형
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA|파이썬] 5356. 의석이의 세로로 말해요 (D3) (0) | 2023.05.20 |
---|---|
[SWEA|파이썬] 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (D3) (0) | 2023.05.19 |
[SWEA|파이썬] 1873. 상호의 배틀필드 (D3) (1) | 2023.05.19 |
[SWEA|파이썬] 3131. 100만 이하의 모든 소수 (D3)-에라토스테네스의 체 (1) | 2023.05.16 |
[SWEA|파이썬] 5948. 새샘이의 7-3-5 게임 (D3) (0) | 2023.05.16 |
[SWEA|파이썬] 11315. 오목 판정 (D3) (0) | 2023.05.16 |