코딩테스트
프로그래머스 코딩테스트 빈 배열에 추가, 삭제하기 JAVA
daeyun대윤
2024. 2. 26. 17:21
빈 배열에 추가, 삭제하기 JAVA
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/181860
문제 설명 : 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.
import java.util.*;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
List<Integer> temp = new ArrayList<>();
for(int i=0; i<flag.length; i++){
if(flag[i]) {
for(int j=0; j<arr[i]*2; j++){
temp.add(arr[i]);
//System.out.println("true : "+i+" "+arr[i]);
}
}else{
int repeatLength = temp.size()-arr[i];
for(int j=temp.size()-1; j>=repeatLength; j--){
//System.out.println("j : "+j);
temp.remove(j);
}
}
}
int[] answer = new int[temp.size()];
for(int i=0; i<temp.size(); i++){
answer[i] = temp.get(i);
}
return answer;
}
}
else 안에 해당하는, remove하는 for문을 돌릴 떄 헷갈렸었다.
for문에서 repeatLength 변수를 만들어서 사용한 이유는,
for문에서 temp의 사이즈가 remove 되면서 temp.size() 즉, 길이가 변경이 되므로 repeatLength 변수를 사용 하지 않고, temp.size()-arr[i] 를 그대로 사용하게 되면 temp.size()의 값이 계속 변경이 되면서 에러가 난다!!
아우참~!
728x90
300x250