CS/알고리즘
[이코테] 정렬 - 두 배열의 원소 교체
데브겸
2023. 2. 10. 12:04
음 풀긴 풀었는데 맞은 풀이일까? 답은 맞는 것 같은데...
처음 array_a와 array_b의 리스트를 만들 때 원소를 int로 받는 법을 까먹었는지 몰라서그런지 좀 이상하게 짰음
1. 내 풀이
n, k = map(int, input().split())
array_a = sorted(input().split())
array_b = sorted(input().split(), reverse=True)
for i in range(k):
if array_a[i] < array_b[i]:
array_a[i], array_b[i] = array_b[i], array_a[i]
else:
continue
result = 0
for j in range(n):
result += int(array_a[j])
print(result)
1-1. 풀이 도중 생각
1) 어? 리스트의 원소를 Int로 어떻게 받더라..?
2) 리스트의 원소를 int로 받았으면 sum으로 한 방에 계산할 수 있을텐데
2. 정답
n, k = map(int, input().split())
array_a = sorted(list(map(int, input().split())))
array_b = sorted(list(map(int, input().split())))
for i in range(k):
if array_a[i] < array_b[i]:
array_a[i], array_b[i] = array_b[i], array_a[i]
else:
break
print(sum(array_a))
3. 새로 알게 된 것 or 새삼 다시 알게 된 것
1) 나는 array_a의 원소가 더 클 때는 continue를 써서 무시하는 방법을 썼는데 책에서는 break를 썼다... 왜???
2) map object를 다시 list()로 묶어주면 list 결과물을 받아볼 수 있다
3) sum(list)를 통해 list의 원소들을 한 방에 더할 수 있다 (int와 str의 합은 x)