정렬
데이터를 특정 기준에 따라서 순서대로 나열
- 선택 정렬 : 가장 작은 것을 선택
- 삽입 정렬 : 특정한 데이터를 적절한 위치에 삽입
- 퀵 정렬 : 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꿈. 피벗(기준) 사용(ex. 리스트에서 첫 번째 데이터를 피벗으로 정한다)
- 계수 정렬(count sort) : 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때만 사용가능함 빠른 정렬 알고리즘 (모든 범위를 담을 수 있는 크기의 리스트를 선언)
- 별도의 리스트를 선언하고 그 안에 정렬에 대한 정보를 담음
- 가장 큰 데이터와 가장 작은 데이터의 차이가 1,000,000을 넘지 않을 때 효과적으로 사용
두 배열은 N개의 원소로 구성되어 있으며, 배열의 원소는 모두 자연수이다. 최대 K번의 바꿔칙 연산을 수행할 수 있다.
N, K, 그리고 배열 A와, B의 정보가 주어졌을 때, 최대 K번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합의 최댓값을 출력하는 프로그램을 작성하시오.
5 3
1 2 5 4 3
5 5 6 6 5
26
N, K = map(int, input().split())
A_list = list(map(int, input().split()))
B_list = list(map(int, input().split()))
A_list.sort()
B_list.sort(reverse=True)
for i in range(K):
if(A_list[i] < B_list[i]):
A_list[i], B_list[i] = B_list[i], A_list[i]
else:
break
print(sum(A_list))
배열 A는 오름차순 정렬하고, 배열 B는 내림차순 정렬을 한다. K번 만큼 배열 A, B의 값을 비교하고 A의 값이 B의 값보다 작으면 값을 서로 바꾼다.
문제 제대로 읽자. 앞으로 코딩하기 전에 문제 요약하기