본문 바로가기

알고리즘 (Python)/이것이 코딩 테스트다 with 파이썬

[정렬 알고리즘] 두 배열의 원소 교체 - 파이썬(python)

728x90
반응형

두 배열의 원소 교체

난이도 : 下 풀이 시간 : 20분

시간 제한 : 2초 메모리 제한 : 128 MB

 


 

해답

 

n, k = map(int, input().split())

a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()
b.sort(reverse=True)

for i in range(k):
    if a[i] < b[i]:
        a[i], b[i] = b[i], a[i]
    
    else:
        break

print(sum(a))

예시

 

n, k = map(int, input().split())

a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort()
b.sort(reverse=True)

for i in range(k):
    if a[i] < b[i]:
        a[i], b[i] = b[i], a[i]
    
    else:
        break

print(sum(a))

해설

 

n, k, a, b를 각각 입력받습니다. 그리고 리스트 a는 오름차순으로, 리스트 b는 내림차순으로 정렬합니다.
for 반복문으로 만약 a[0](리스트 a 중 가장 작은 수)가 b[0](리스트 b 중 가장 큰 수)보다 작다면, 둘을 스왑해줍니다.
이와 같은 과정을 반복한 뒤, 리스트 a에 저장된 수를 모두 sum해주면 답을 구할 수 있습니다.
728x90
반응형