ZeroBase 강의에서 들었던 내용 중에 비슷한 내용이 있었기 때문에,
너무 어렵지 않게 풀 수 있었다.
(조금 어려웠음)
어렴풋이 기억나기로는 강사님 코드가 훨씬 더 간결하고 쉬웠던것 같다.
강의를 다시 찾아서 학습해보고 내 코드 리팩토링 해야겠다! 💪
public class Main {
public static void main(String[] args) {
// 23.03.13 선택문제 programmers
int[] a = new int[]{1,1,3,3,0,1,1};
solution(a);
}
public static int[] solution(int[] arr) {
int[] answer = {};
int now = 0, next = 1;
while (true) {
if (next == arr.length) break;
if (arr[now] == arr[next]) {
next++;
} else {
arr[++now] = arr[next++];
}
}
answer = new int[now + 1];
for (int i = now; i >= 0; i--) {
answer[i] = arr[i];
}
return answer;
}
}
🔻 강의 수강 후 리팩토링 고고 🔻
public class Main {
public static void main(String[] args) {
// 23.03.13 선택문제 programmers
int[] a = new int[]{1,1,3,3,0,1,1};
solution(a);
}
public static int[] solution(int[] arr) {
int[] answer = {};
int idx = 0;
for (int n: arr) {
if (idx == 0 || n != arr[idx - 1])
arr[idx++] = n;
}
answer = new int[idx--];
for (int i = idx; i >= 0; i--) {
answer[i] = arr[i];
}
return answer;
}
}
핵심 1
int idx = 0;
for (int n: arr) {
if (idx == 0 || n != arr[idx - 1])
arr[idx++] = n;
}
idx가 0 이거나, n이 이전 숫자와 다르면
arr[idx]에 n 입력하고 idx += 1