https://school.programmers.co.kr/learn/courses/30/lessons/12941
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
for(int e : A) {
list1.add(e);
}
for(int e : B) {
list2.add(e);
}
int sum = 0;
while(!list2.isEmpty()) {
int max = Collections.max(list1);
int min = Collections.min(list2);
sum = max * min;
list1.remove(String.valueOf(max));
list2.remove(String.valueOf(min));
}
return sum;
}
}
이렇게 짰는데... 실행 시간 초과로 제출이 안 됐다.
아니 그냥 코드 실행 자체가 안 됐다.
실행 시간이 10.0초를 초과하여 실행이 중단되었습니다. 실행 시간이 더 짧은 다른 방법을 찾아보세요.
나는 이런 상황이면 바로 GPT한테 간다.
문제도 이해했고, 코드도 다 짜 봤는데 실행 시간 초과라면 내가 바로 해결하기 어렵다.
그렇게 피드백 받은 코드가 정말 충격적이었다.
import java.util.*;
class Solution {
public int solution(int[] A, int[] B) {
// 배열 A는 오름차순으로 정렬
Arrays.sort(A);
// 배열 B는 내림차순으로 정렬
Arrays.sort(B);
int sum = 0;
int n = A.length;
for (int i = 0; i < n; i++) {
sum += A[i] * B[n - 1 - i]; // A의 i번째 요소와 B의 역순 i번째 요소를 곱함
}
return sum;
}
}
와.
정말 대단히 쉽고 단순하며 논리적인 걸로 승부를 다 봤다.
소팅도 리버스로 안 한다.
그런 걸 왜 하나?
인덱스 조작하면 되는데.
다른 사람의 풀이 상위에도 위 같은 풀이법이 없었다.
누군가가 분명 했겠지만, 워낙 오래된 문제라서 상단에 없는 거겠지만, 별로 좋아 보이지 않는 코드가 상위에 있는 것
그리고 아래로 내려봐도 위 같은 접근법이 안 보이는 것 등이 많은 생각을 하게 한다.
GPT는... 혁명이다.
하위층의 수준을 끌어올리기에는 이것만 한 게 없다.
세상 어디에도 돈 3만 원으로 이런 피드백을 해 줄 곳은 없다.