[파이썬] 백준 1083 : 소트 (골드4)
풀이
방향성 생각
각 자리수 마다 남은 횟수 S에 대해서 Swap 가능한 범위가 주어진다.
Swap 범위 내에서 해당 자리보다 큰 값이 주어지면 Swap을 반복한다.
$N=50$이라 swap만 제대로 구현하면 시간적으로 문제될 일은 없다.
전체코드
N = int(input())
arr = list(map(int,input().split()))
T = int(input())
goal = sorted(arr,reverse=True)
# 해당 인덱스 a에서 앞으로 한칸 swap
def swap(array: list, a: int)->list:
array[a],array[a-1] = array[a-1],array[a]
return array
while T:
# 처음부터 스왑이 불가능한 경우 break로 루프를 탈출한다.
if arr == goal:
break
for i in range(N-1):
temp_max = max(arr[i+1:i+1+T])
if arr[i] < max(arr[i+1:i+1+T]):
arr = swap(arr,arr.index(temp_max))
T -= 1
break
print(*arr)
코멘트
- 출력형식 잘 보기.
'Algorithm > Greedy' 카테고리의 다른 글
[자바] SWEA 1868 : 파핑파핑 지뢰찾기 (D4) (0) | 2025.03.09 |
---|---|
[파이썬] 백준 12904 : A와 B (골드5) (0) | 2024.12.24 |
[파이썬] 백준 9576 : 책 나눠주기 (골드2) (1) | 2024.05.28 |
[파이썬] 백준 3109 : 빵집 (골드2) (0) | 2024.04.14 |
[파이썬] 백준 18234 : 당근훔쳐먹기 (골드3) (0) | 2024.04.02 |
[파이썬] 프로그래머스 : 인사고과 (레벨3) (0) | 2024.04.02 |
[파이썬] 백준 1736 : 쓰레기 치우기 (골드1) (0) | 2024.02.18 |
댓글