풀이
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
int[] answer = {};
for(int i=0;i<flag.length;i++) { // flag 길이만큼 순회
if(flag[i]) {
int[] temp = new int[arr[i]*2]; // arr[i]*2만큼 임시 배열 생성, 각 요소에 arr[i] 할당
for(int j=0;j<temp.length;j++) {
temp[j] = arr[i];
}
answer = IntStream.concat(Arrays.stream(answer), Arrays.stream(temp)).toArray(); // 기존 answer와 임시 배열 합치기
}
else {
answer = Arrays.copyOfRange(answer,0,answer.length-arr[i]); // 기존 answer 배열에서 arr[i]크기만큼 줄여서 다시 할당
}
}
return answer;
}
}
배열 공부한다고 Array만 쓰려다가 괜히 복잡하게 했다;;
list를 쓰면 add, remove를 사용하면 간편한데..
역시 Array보다 linked list가 입력, 삭제가 간편하긴하다.
'알고리즘공부 > 프로그래머스 연습' 카테고리의 다른 글
배열 조각하기 (0) | 2024.11.24 |
---|---|
배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.11.24 |
특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.11.24 |
문자열 돌리기 (0) | 2024.11.24 |
부분 문자열 (0) | 2024.11.24 |