본문 바로가기
CS/알고리즘

[이코테] 정렬 - 두 배열의 원소 교체

by 데브겸 2023. 2. 10.

음 풀긴 풀었는데 맞은 풀이일까? 답은 맞는 것 같은데...

처음 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)