pi++는 곧 answer.add(arr1[pi]); pi++; 이렇게 표현할 수 있지 않나요? 그렇게 적용해서 아래 코드를 실행해보았는데 java.lang.outofMemoryError:java heapspace 에러가 납니다. 에러의 원인이 어디서 발생하는지 고민하다가 파악이 되지 않아서 질문드립니다.
public class IfTwoPointer { public ArrayList<Integer> solution(int[] arr1, int[] arr2, int num1, int num2) { ArrayList<Integer> answer = new ArrayList<>(); int pi = 0; int pj = 0; while (pi < num1 && pj < num2) { if (arr1[pi] <= arr2[pj]) { answer.add(arr1[pi]); pi++; // pi 와 pj++ 를 따로 넣으면, out of memory 에러가 발생한다. } else answer.add(arr2[pj]); pj++; } while (pi < num1) answer.add(arr1[pi]); pi++; while (pj < num2) answer.add(arr2[pj]); pj++; return answer; } public static void main(String[] args) { // TODO Auto-generated method stub IfTwoPointer answer = new IfTwoPointer(); Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int[] arr1 = new int[num1]; for (int i = 0; i < num1; i++) { arr1[i] = sc.nextInt(); } int num2 = sc.nextInt(); int[] arr2 = new int[num2]; for (int i = 0; i < num2; i++) { arr2[i] = sc.nextInt(); } for (int data : answer.solution(arr1, arr2, num1, num2)) { System.out.print(data + " "); } // System.out.println(answer.printResult(arr1, arr2, num1, num2, result)); } }
2022. 03. 20. 23:43
해보니까 되네요! 정말 감사합니다 :)