python-for-coding-test
python-for-coding-test copied to clipboard
182p 두 배열의 원소 교체 문제 질문입니다.
해설에 배열 A는 오름차순 정렬 , 배열 B는 내림차순 정렬이라고 나와있는데 이렇게 하는 이유가 뭔가요?
B의 원소와 K번 바꿔치기를 하여 A원소의 합이 최대값이 되기 위해서는, 되도록 작은 값의 A의 원소와 되도록 큰 값의 B의 원소가 교체 되어야 합니다. 그렇지만 입력으로 주어진 A와 B의 배열은 정렬이 보장되지 않는 상황이기 때문에, 각 배열을 정렬해주는 과정이 필요합니다. 그래서 A와 B를 정렬해주는 것이지요.
정렬 이후에는 A에서는 작은 수부터 접근을 해야하고, B에서는 큰 수부터 접근을 해야하는데, 이 과정에서는 배열의 인덱스 값(i)을 활용하게 됩니다. 만약 A와 B가 둘 다 오름차순 정렬이라면 B의 값에 접근하기 위해서는 B 배열의 길이 - 1 - i와 같은 형태로 역순으로 접근을 해야 하죠. 만약 A는 오름차순, B는 내림차순 정렬이라면 별도의 인덱스 계산 없이 i 인덱스 하나로 각 배열에서 원하는 값에 한 번에 접근할 수 있습니다.
요약하자면, '정렬'을 사용하는 이유를 안다면 오름차순이든 내림차순이든 상관이 없습니다. 다만 코드의 가독성을 위해서 A는 오름차순, B는 내림차순 정렬을 사용한 것이라 생각이 되네요.
화이팅입니다!