자바 문제 풀이 write-up
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다.
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer;
int i=1, ansCount =1;
for(i=1; i<arr.length; i++){
if(arr[i]!=arr[i-1])
ansCount++;
} //answer 배열의 길이 파악
answer = new int[ansCount]; //배열 크기 지정
answer[0] = arr[0];
ansCount=1;
for(i=1; i<arr.length; i++){ //answer값 초기화
if(arr[i]!=arr[i-1]){
answer[ansCount]=arr[i];
ansCount++;
}
}
return answer;
}
}
answer값을 초기화하면서 배열 크기를 실시간으로 늘리고싶은 욕심에
temp배열을 따로 만들어
int[] temp = new int[arr.length + 1]; // 크기가 1 더 큰 새로운 배열 생성
for (int i = 0; i < arr.length; i++) {
temp[i] = arr[i]; // 기존 배열 값 복사
}
temp[arr.length] = 6; // 새로운 값 추가
arr = temp; // 새로운 배열을 기존 배열로 대체
이처럼 값을 초기화 할때마다 위 과정을 반복하려고 시도했다.
=> 출력값은 정답처리 되었지만 효율성 테스트에서 실패했다.
계속 찾아보다가 그냥 깔끔하게 배열 길이를 먼저 구하는 방법을 선택했고
위 처럼 간단한 반복문 2개로 답을 구할 수 있었다.