정수 요소를 포함하는 배열이 제공된다고 가정합니다. 한 번의 스왑 작업만 수행할 수 있는 경우 배열의 값을 내림차순으로 정렬할 수 있는지 확인해야 합니다. 가능하면 가능하다고 말하고 그렇지 않으면 불가능합니다.
따라서 입력이 input_list =[7, 8, 12, 10, 11, 9]와 같으면 출력은 "Can be done"이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp_list :=list input_list의 복사본
- temp_list 목록 정렬
- swap_count :=0
- 0에서 input_list의 크기 사이에 있는 i에 대해
- input_list[i]가 temp_list[i]와 같지 않으면
- swap_count :=swap_count + 1
- input_list[i]가 temp_list[i]와 같지 않으면
- swap_count가 0과 같거나 swap_count가 2와 같으면
- 참 반환
- 그렇지 않으면
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
from copy import deepcopy def solve(input_list): temp_list = deepcopy(input_list) temp_list.sort() swap_count = 0 for i in range(len(input_list)): if input_list[i] != temp_list[i]: swap_count += 1 if swap_count == 0 or swap_count == 2: print("Can be done") else: print("Can't be done") input_list = [7, 8, 12, 10, 11, 9] solve(input_list)
입력
[7, 8, 12, 10, 11, 9]
출력
Can be done